共用方式為


使用 Get-CimInstance 取得 WMI 物件

此範例僅適用於 Windows 平臺。

Windows Management Instrumentation (WMI) 是 Windows 系統管理的核心技術,因為它會以統一的方式公開各種資訊。 由於 WMI 能夠產生多少,因此用來存取 WMI 物件的 Get-CimInstancePowerShell Cmdlet 是執行實際工作最有用的 Cmdlet 之一。 我們將討論如何使用 CIM Cmdlet 來存取 WMI 對象,然後如何使用 WMI 物件來執行特定動作。

列出 WMI 類別

大部分 WMI 用戶面臨的第一個問題是嘗試找出 WMI 可以做些什麼。 WMI 類別描述可管理的資源。 有數百個 WMI 類別,其中有些類別包含數十個屬性。

Get-CimClass 藉由讓 WMI 可供探索來解決此問題。 您可以輸入下列命令,取得本機電腦上可用的 WMI 類別清單:

Get-CimClass -Namespace root/CIMV2 | 
    Where-Object CimClassName -like Win32* | 
    Select-Object CimClassName
CimClassName
------------
Win32_DeviceChangeEvent
Win32_SystemConfigurationChangeEvent
Win32_VolumeChangeEvent
Win32_SystemTrace
Win32_ProcessTrace
Win32_ProcessStartTrace
Win32_ProcessStopTrace
Win32_ThreadTrace
Win32_ThreadStartTrace
Win32_ThreadStopTrace
...

您可以使用 ComputerName 參數,從遠端電腦擷取相同的資訊,並指定電腦名稱或 IP 位址:

Get-CimClass -Namespace root/CIMV2 -ComputerName 192.168.1.29

遠端電腦傳回的類別清單可能會因為電腦執行的特定作業系統而有所不同,而且已安裝的應用程式會新增特定的WMI擴充功能。

注意

使用 CIM Cmdlet 連線到遠端電腦時,遠端電腦必須執行 WMI,而您所使用的帳戶必須位於遠端電腦上的本機 管理員 istrators 群組中。 遠程系統不需要安裝PowerShell。 這可讓您管理未執行 PowerShell 但可使用 WMI 的作業系統。

顯示 WMI 類別詳細數據

如果您已經知道 WMI 類別的名稱,您可以使用它立即取得資訊。 例如,用來擷取計算機相關信息的其中一個WMI類別Win32_OperatingSystem

Get-CimInstance -Class Win32_OperatingSystem
SystemDirectory     Organization BuildNumber RegisteredUser SerialNumber            Version
---------------     ------------ ----------- -------------- ------------            -------
C:\WINDOWS\system32 Microsoft    22621       USER1          00330-80000-00000-AA175 10.0.22621

雖然我們顯示所有參數,但命令可以更簡潔的方式表示。 連接到 本機系統時,不需要 ComputerName 參數。 我們會示範最一般的情況,並提醒您有關 參數。 命名空間預設為 root/CIMV2,也可以省略 和 。 最後,大部分 Cmdlet 可讓您省略一般參數的名稱。 使用 Get-CimInstance時,如果未指定第一個參數的名稱,PowerShell 會將它 視為 Class 參數。 這表示最後一個命令可能已發出,方法是輸入:

Get-CimInstance Win32_OperatingSystem

Win32_OperatingSystem 類別具有比這裏顯示的屬性多得多。 您可以使用 Get-Member 來查看所有屬性。 WMI 類別的屬性會自動像其他物件屬性一樣提供:

Get-CimInstance -Class Win32_OperatingSystem | Get-Member -MemberType Property
   TypeName: Microsoft.Management.Infrastructure.CimInstance#root/cimv2/Win32_OperatingSystem
Name                                      MemberType Definition
----                                      ---------- ----------
BootDevice                                Property   string BootDevice {get;}
BuildNumber                               Property   string BuildNumber {get;}
BuildType                                 Property   string BuildType {get;}
Caption                                   Property   string Caption {get;}
CodeSet                                   Property   string CodeSet {get;}
CountryCode                               Property   string CountryCode {get;}
CreationClassName                         Property   string CreationClassName {get;}
CSCreationClassName                       Property   string CSCreationClassName {get;}
CSDVersion                                Property   string CSDVersion {get;}
CSName                                    Property   string CSName {get;}
CurrentTimeZone                           Property   int16 CurrentTimeZone {get;}
DataExecutionPrevention_32BitApplications Property   bool DataExecutionPrevention_32BitApplications {get;}
DataExecutionPrevention_Available         Property   bool DataExecutionPrevention_Available {get;}
...

使用 Format Cmdlet 顯示非預設屬性

如果您想要預設未顯示之Win32_OperatingSystem類別中所包含的資訊,您可以使用 Format Cmdlet 加以顯示。 例如,如果您想要顯示可用的記憶體資料,請輸入:

Get-CimInstance -Class Win32_OperatingSystem | Format-Table -Property TotalVirtualMemorySize, TotalVisibleMemorySize, FreePhysicalMemory, FreeVirtualMemory, FreeSpaceInPagingFiles
TotalVirtualMemorySize TotalVisibleMemorySize FreePhysicalMemory FreeVirtualMemory FreeSpaceInPagingFiles
---------------------- ---------------------- ------------------ ----------------- ----------------------
              41787920               16622096            9537952          33071884               25056628

注意

通配符在 中使用 Format-Table屬性名稱,因此可以將最終管線項目縮減為 Format-Table -Property Total*Memory*, Free*

如果您輸入下列命令將記憶體資料格式化為清單,記憶體資料可能會更容易閱讀:

Get-CimInstance -Class Win32_OperatingSystem | Format-List Total*Memory*, Free*
TotalVirtualMemorySize : 41787920
TotalVisibleMemorySize : 16622096
FreePhysicalMemory     : 9365296
FreeSpaceInPagingFiles : 25042952
FreeVirtualMemory      : 33013484
Name                   : Microsoft Windows 11 Pro|C:\Windows|\Device\Harddisk0\Partition2