取得 WMI 物件 (Get-WmiObject)

Windows Management Instrumentation (WMI) 以統一的方式公開多種資訊,是 Windows 系統管理的核心技術。由於 WMI 幾乎能協助完成所有事項,所以 Windows PowerShell 用於存取 WMI 物件的 Get-WmiObject Cmdlet 可說是執行實際工作最有用的工具之一。以下將討論如何使用 Get-WmiObject 存取 WMI 物件,接著介紹如何使用 WMI 物件來執行特定事項。

列舉 WMI 類別

大多數 WMI 使用者會遇到的第一個問題就是 WMI 究竟能協助完成哪些事項。WMI 類別描述了可受管理的資源。WMI 類別多達幾百個,某些類別甚至包含數十個屬性。

Get-WmiObject 藉由提供可探索的 WMI 來解決這個問題。如需取得本機電腦上可用的 WMI 類別清單,請輸入:

PS> Get-WmiObject -List


__SecurityRelatedClass                  __NTLMUser9X
__PARAMETERS                            __SystemSecurity
__NotifyStatus                          __ExtendedStatus
Win32_PrivilegesStatus                  Win32_TSNetworkAdapterSettingError
Win32_TSRemoteControlSettingError       Win32_TSEnvironmentSettingError
...

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

PS> Get-WmiObject -List -ComputerName 192.168.1.29


__SystemClass                           __NAMESPACE
__Provider                              __Win32Provider
__ProviderRegistration                  __ObjectProviderRegistration
...

遠端電腦傳回的類別清單可能會有不同,依電腦所執行的特定作業系統與已安裝應用程式所附加的特定 WMI 延伸模組而定。

附註:

使用 Get-WmiObject 連接遠端電腦時,遠端電腦必須已執行 WMI,且在預設組態下,您所使用的帳戶必須隸屬於遠端電腦的本機系統管理員群組。遠端系統可以不必安裝 Windows PowerShell。這樣您就能使用其提供的 WMI 來管理未執行 Windows PowerShell 的作業系統。

連接本機電腦時甚至亦可加上 ComputerName。您可以使用本機電腦的名稱或 IP 位址 (或是回送位址 127.0.0.1),甚或 WMI 樣式 '.' 做為電腦名稱。假設執行 Windows PowerShell 的電腦名稱為 Admin01 且 IP 位址為 192.168.1.90,則以下幾個命令都將傳回該電腦的 WMI 類別清單:

Get-WmiObject -List
Get-WmiObject -List -ComputerName .
Get-WmiObject -List -ComputerName Admin01
Get-WmiObject -List -ComputerName 192.168.1.90
Get-WmiObject -List -ComputerName 127.0.0.1
Get-WmiObject -List -ComputerName localhost

Get-WmiObject 預設使用 root/cimv2 命令空間。若要指定不同的 WMI 命名空間,請使用 Namespace 參數並指定對應的命名空間路徑:

PS> Get-WmiObject -List -ComputerName 192.168.1.29 -Namespace root


__SystemClass                           __NAMESPACE
__Provider                              __Win32Provider
...

顯示 WMI 類別詳細資料

如果您已知道 WMI 類別的名稱,即可直接使用名稱取得資訊。例如,一般用於擷取電腦相關資訊的 WMI 類別是 Win32_OperatingSystem

PS> Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName .


SystemDirectory : C:\WINDOWS\system32
Organization    : Global Network Solutions
BuildNumber     : 2600
RegisteredUser  : Oliver W. Jones
SerialNumber    : 12345-678-9012345-67890
Version         : 5.1.2600

雖然以上展示了所有的參數,其實此命令還能再做簡化。連接本機電腦時不需要 ComputerName 參數。命令中包含這個參數是為了示範最一般的情況,同時提醒您有這個參數存在。Namespace 的預設值即為 root/cimv2,當然也可以省略。最後,大多數的 cmdlet 皆可省略一般參數的名稱。就 Get-WmiObject 而言,如果第一個參數沒有指定名稱,Windows PowerShell 會將其視為 Class 參數。因此,上述命令可以改寫成:

Get-WmiObject Win32_OperatingSystem

上述屬性只是 Win32_OperatingSystem 類別所有屬性的一小部分。您可以使用 Get-Member 檢視全部屬性。列舉 WMI 類別屬性的做法和其他的物件屬性一樣:

PS> Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName . | Get-Member -MemberType Property


   TypeName: System.Management.ManagementObject#root\cimv2\Win32_OperatingSyste
m

Name                                      MemberType Definition
----                                      ---------- ----------
__CLASS                                   Property   System.String __CLASS {...
...
BootDevice                                Property   System.String BootDevic...
BuildNumber                               Property   System.String BuildNumb...
...

使用 Format Cmdlet 顯示非預設屬性

如果您想查看 Win32_OperatingSystem 類別所包含但預設情況下並未顯示的資訊,則可使用 Format Cmdlet 加以顯示。例如,若要顯示可用的記憶體資料,請輸入:

PS> Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName . | Format-Table -Property TotalVirtualMemorySize,TotalVisibleMemorySize,FreePhysicalMemory,FreeVirtualMemory,FreeSpaceInPagingFiles

TotalVirtualMemorySize TotalVisibleMem FreePhysicalMem FreeVirtualMemo FreeSpaceInPagi
                              ory              ry         ngFiles
--------------- --------------- --------------- --------------- ---------------
        2097024          785904          305808         2056724         1558232
附註:

Format-Table 中的屬性名稱允許使用萬用字元,因此最後一個管線元素可簡化為 Format-Table -Property TotalV*,Free*

以清單格式顯示記憶體資料可能更容易判讀,如下所示:

PS> Get-WmiObject -Class Win32_OperatingSystem -Namespace root/cimv2 -ComputerName . | Format-List TotalVirtualMemorySize,TotalVisibleMemorySize,FreePhysicalMemory,FreeVirtualMemory,FreeSpaceInPagingFiles


TotalVirtualMemorySize : 2097024
TotalVisibleMemorySize : 785904
FreePhysicalMemory     : 301876
FreeVirtualMemory      : 2056724
FreeSpaceInPagingFiles : 1556644




目錄