Powershell获取WMI设备清单

Powershell获取WMI设备清单

支持所有PS版本。

WMI服务能够报告详细的硬件信息。通常,每个硬件都来自它们自己的WMI代理类。但是要找出这些硬件类的名字是不容易。

所有硬件类都在同一个WMI根下面,你可以在根类查询所有的硬件:

1
Get-WmiObject -Class CIM_LogicalDevice |  Out-GridView

上面命令能返回基础硬件清单。但是你要获得更多的信息,加上补充的代码,你还可以从WMI中获得硬件类的名字:

1
2
3
4
Get-WmiObject -Class CIM_LogicalDevice |
   Select-Object -Property __Class, Description |
   Sort-Object -Property __Class -Unique |
   Out-GridView

现在你可以使用不同的类名查询硬件的详细类型和获得它们的清单:

1
2
3
4
5
6
PS>  Get-WmiObject -Class Win32_SoundDevice
 
Manufacturer        Name                Status                       StatusInfo
------------        ----                ------                       ----------
Cirrus Logic, Inc.  Cirrus Logic CS4... OK                                    3
Intel(R) Corpora... Intel(R) Display... OK                                    3

原文地址:WMI Device Inventory 

$Server = $env:computername
#server's CPU Mem Hardinfor 
  $cpu = gwmi –computername $Server win32_Processor 
  $men = gwmi -ComputerName $Server win32_OperatingSystem 
  $Disks = gwmi –Computer: $Server win32_logicaldisk -filter "drivetype=3" 
  $Havecpu = "{0:0.0} %" -f $cpu.LoadPercentage 
  $Allmen = "{0:0.0} MB" -f ($men.TotalVisibleMemorySize  / 1KB) 
  $Freemen = "{0:0.0} MB" -f ($men.FreePhysicalMemory  / 1KB) 
  $Permem =  "{0:0.0} %" -f ((($men.TotalVisibleMemorySize-$men.FreePhysicalMemory)/$men.TotalVisibleMemorySize)*100) 
  Write-Host "COMPUTER:$Server"`r`n
  Write-Host "CPU: $Havecpu"`r`n
  Write-Host "Total Mem:$Allmen"`r`n 
  Write-Host "Left Mem:$Freemen"`r`n
  Write-Host "Used Mem:$Permem"`r`n
  $IpAdd = (Get-WmiObject -class win32_NetworkAdapterConfiguration -Filter 'ipenabled = "true"').ipaddress[0]
  Write-Host "Ipaddress:$IpAdd"`r`n

Get-WmiObject 即将过时

在PowerShell 3.0 中,你仍然可以使用功能强大的Get-WmiObject命令,但是它们会逐渐被CIM命令所替代。如果你已经在使用Get-WmiObject命令查询数据。那可以非常流畅地切换至Get-CimInstance,因为这类命令都比较类似。只不过Get-CimInstance执行的结果只是名副其实的Instance,没有包含任何方法信息。

一方面如果你要确保向后兼容,另一方面你可能想避免使用CIM的命令,这就需要PowerShell 3.0。但可惜的是,PowerShell 3.0 不能运行在XP,Vista,Win 2003中。

原文链接:Get-WmiObject Becomes Obsolete

Powershell 获取系统可用内存

http://www.pstips.net/powershell-get-free-memory.html

使用Powershell获取系统可用内存可以使用两种方法,一种是wmi Win32_OperatingSystem对象,另一种是可以通过性能计数器。

通过Win32_OperatingSystem,代码如下:

1
2
3
4
$ops Get-WmiObject -Class Win32_OperatingSystem
"机器名      : {0}" -f $ops .csname
"可用内存(MB): {0}" -f ( [math] ::round( $ops .FreePhysicalMemory / 1kb, 2))
"可用内存(GB): {0}" -f ( [math] ::round(( $ops .FreePhysicalMemory / (1mb)), 2))

输出如下:

机器名      : BAOZHEN-PC
可用内存(MB): 1834.59
可用内存(GB): 1.79

通过性能计数器获取可用内存,代码如下:

1
2
3
4
5
6
7
8
9
10
11
#查看内存相关的性能计数器
  ( Get-Counter -ListSet memory).Counter
#Available Bytes 为可用的内存大小
#通过Path获取该计数器
$availableMemoryCounter = Get-Counter -Counter "\Memory\Available Bytes"
$freeMemory = $availableMemoryCounter .CounterSamples[0].rawValue
 
#把可用内存转换成GB
"可用内存:$([Math]::Round($freeMemory/1gb,2))GB"
#把可用内存转换成MB
"可用内存:$([Math]::Round($freeMemory/1mb,2))MB"

输出如下:

MemoryCache Bytes
MemoryCache Bytes Peak
MemoryPool Paged Resident Bytes
MemorySystem Code Total Bytes
MemorySystem Code Resident Bytes
MemorySystem Driver Total Bytes
MemorySystem Driver Resident Bytes
MemorySystem Cache Resident Bytes
Memory% Committed Bytes In Use
MemoryAvailable KBytes
MemoryAvailable MBytes
MemoryTransition Pages RePurposed/sec
MemoryFree & Zero Page List Bytes
MemoryModified Page List Bytes
MemoryStandby Cache Reserve Bytes
MemoryStandby Cache Normal Priority Bytes
MemoryStandby Cache Core Bytes
可用内存:1.69GB
可用内存:1731MB

===============================================

#查看当前CPU利用率

$counter = New-Object Diagnostics.PerformanceCounter
$counter.CategoryName = "Processor"
$counter.CounterName = "% Processor Time"
$counter.InstanceName = "_Total"

while ($true)
{
    $value = $counter.NextValue()
    Write-Host "CPU: $value"
    sleep 1
}

#查看进程的CPU利用率:

#取CPU核心数量,如果计算机为多核心的话,Process/% Processor Time的结果为每个核心的CPU利用率之和,会大于100%
$cpus = (gwmi win32_computersystem).NumberOfLogicalProcessors
 
$counter = New-Object Diagnostics.PerformanceCounter
$counter.CategoryName = "Process"
$counter.CounterName = "% Processor Time"
$counter.InstanceName = "winrar" #定义需要监视的进程
#获取当前计数器的值
$counter.NextValue()/$cpus

#查看进程的内存使用情况:

$TotalMemory = (Get-WmiObject -Class Win32_PhysicalMemory |measure capacity -sum).Sum   #(gwmi win32_computersystem).TotalPhysicalMemory

$counter = New-Object Diagnostics.PerformanceCounter
$counter.CategoryName = "Process"
$counter.CounterName = "Working Set - Private"
$counter.InstanceName = "ZQErpService" #定义需要监视的进程
#获取当前计数器的值

$counter.NextValue()/$TotalMemory

猜你喜欢

转载自www.cnblogs.com/lsgxeva/p/9314410.html
wmi