• 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 "MemoryAvailable 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
  • 相关阅读:
    六、函数篇
    七、浅拷贝和深拷贝
    五、模块导入方法及常用模块
    四、注释与捕获参数
    三、python对字符串和集合的内存垃圾回收机制
    二、数据类型的常用方法
    一、基本数据类型
    工作必备之正则匹配、grep、sed、awk
    如何检查linux服务器是否被入侵
    linux查看磁盘类型(是否SSD盘)
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/9314410.html
Copyright © 2020-2023  润新知