共用方式為


about_WMI_Cmdlets

簡短描述

提供 Windows Management Instrumentation (WMI) 和 Windows PowerShell 的背景資訊。

詳細描述

本主題提供 WMI 技術、適用於 Windows PowerShell 的 WMI Cmdlet、WMI 型遠端處理、WMI 加速器和 WMI 疑難解答的相關信息。 本主題也提供 WMI 的詳細信息連結。

關於 WMI

Windows Management Instrumentation (WMI) 是 Microsoft 在 Web 架構企業管理 (WBEM) 方面的實作,這是一種開發標準技術的業界措施,用於存取企業環境中的管理資訊。 WMI 使用通用訊息模型 (CIM) 業界標準來代表系統、應用程式、網路、裝置和其他受管理元件。 CIM 由分散式管理任務推動小組 (DMTF) 開發與維護。 您可以使用 WMI 來管理本機和遠端電腦。 例如,您可以使用 WMI 來執行下列動作:

  • 在遠端電腦上啟動進程。
  • 從遠端重新啟動電腦。
  • 取得安裝在本機或遠端電腦上的應用程式清單。
  • 查詢本機或遠端電腦上的 Windows 事件記錄檔。

適用於 WINDOWS POWERSHELL 的 WMI CMDLET

Windows PowerShell 會透過一組預設可在 Windows PowerShell 中取得的 Cmdlet 來實作 WMI 功能。 您可以使用這些 Cmdlet 來完成管理本機和遠端電腦所需的端對端工作。

包含下列 WMI Cmdlet。

指令程式 描述
Get-WmiObject 取得 WMI 類別或信息的實例
關於可用的類別。
Invoke-WmiMethod 呼叫 WMI 方法。
Register-WmiEvent 訂閱 WMI 事件。
Remove-WmiObject 刪除 WMI 類別和實例。
Set-WmiInstance 建立或修改 WMI 類別的實例。

範例命令

下列命令會顯示本機計算機的BIOS資訊。

C:\PS> get-wmiobject win32_bios | format-list *

下列命令會顯示三部遠端電腦的 WinRM 服務相關信息。

$wql = "select * from win32_service where name='WinRM'"
get-wmiobject -query $wql -computername server01, server01, server03

下列更複雜的命令會結束程式的所有實例。

C:\PS> notepad.exe
C:\PS> $wql = "select * from win32_process where name='notepad.exe'"
C:\PS> $np = get-wmiobject -query $wql
C:\PS> $np | remove-wmiobject

WMI 型遠端處理

雖然透過 WMI 管理本機系統的能力很有用,但它是讓 WMI 成為功能強大的系統管理工具的遠端功能。 WMI 會使用Microsoft的分散式元件物件模型 (DCOM) 來連線及管理系統。 您可能必須設定某些系統以允許 DCOM 連線。 防火牆設定和鎖定的DCOM許可權可能會封鎖WMI遠端管理系統的能力。

WMI 類型加速器

Windows PowerShell 包含 WMI 類型加速器。 這些 WMI 類型加速器(快捷方式)允許比非類型快捷鍵方法更直接存取 WMI 物件。

WMI 支援下列型別加速器:

[WMISEARCHER] - 搜尋 WMI 物件的快捷方式。

[WMICLASS] - 存取類別之靜態屬性和方法的快捷方式。

[WMI] - 取得類別單一實例的快捷方式。

[WMISEARCHER] 是 ManagementObjectSearcher 的類型加速器。 它可能需要一個字串建構函式來建立搜尋程式,然後您可以執行 GET() 。

例如:

PS> $s = [WmiSearcher]'Select * from Win32_Process where Handlecount > 1000'
PS> $s.Get() |sort handlecount |ft handlecount,__path,name -auto

count  __PATH                                              name
-----  ------                                              ----
1105   \\SERVER01\root\cimv2:Win32_Process.Handle="3724"   PowerShell...
1132   \\SERVER01\root\cimv2:Win32_Process.Handle="1388"   winlogon.exe
1495   \\SERVER01\root\cimv2:Win32_Process.Handle="2852"   iexplore.exe
1699   \\SERVER01\root\cimv2:Win32_Process.Handle="1204"   OUTLOOK.EXE
1719   \\SERVER01\root\cimv2:Win32_Process.Handle="1912"   iexplore.exe
2579   \\SERVER01\root\cimv2:Win32_Process.Handle="1768"   svchost.exe

[WMICLASS] 是 ManagementClass 的類型加速器。 這個字串建構函式會採用 WMI 類別的本機或絕對 WMI 路徑,並傳回系結至該類別的物件。

例如:

PS> $c = [WMICLASS]"root\cimv2:WIn32_Process"
PS> $c |fl *
Name             : Win32_Process
__GENUS          : 1
__CLASS          : Win32_Process
__SUPERCLASS     : CIM_Process
__DYNASTY        : CIM_ManagedSystemElement
__RELPATH        : Win32_Process
__PROPERTY_COUNT : 45
__DERIVATION     : {CIM_Process, CIM_LogicalElement,
                   CIM_ManagedSystemElement}
__SERVER         : SERVER01
__NAMESPACE      : ROOT\cimv2
__PATH           : \\SERVER01\ROOT\cimv2:Win32_Process

[WMI] 是 ManagementObject 的類型加速器。 這個字串建構函式會採用 WMI 實例的本機或絕對 WMI 路徑,並傳回系結至該實例的物件。

例如:

PS> $p = [WMI]'\\SERVER01\root\cimv2:Win32_Process.Handle="1204"'
PS> $p.Name
OUTLOOK.EXE

WMI 疑難解答

下列問題是您嘗試連線到遠端計算機時可能發生的最常見問題。

問題 1:遠端電腦不在在線。

如果電腦離線,您將無法使用 WMI 連線到電腦。 您可能會收到下列錯誤訊息:

Remote server machine does not exist or is unavailable

如果您收到此錯誤訊息,請確認計算機已上線。 嘗試 Ping 遠端電腦。

問題 2:遠端電腦上沒有本機系統管理員許可權。

若要從遠端使用 WMI,您必須擁有遠端電腦上的本機系統管理員許可權。 如果您未這麼做,將會拒絕該計算機的存取權。

若要驗證命名空間安全性:

  1. 按兩下 [開始],以滑鼠右鍵按兩下 [我的計算機],然後按兩下 [管理]。
  2. 在 [計算機管理] 中,展開 [服務和應用程式],以滑鼠右鍵按兩下 [WMI 控制件],然後按兩下 [屬性]。
  3. 在 [WMI Control Properties (WMI 控制內容)] 對話方塊中,按一下 [安全性] 索引標籤。

問題3:防火牆封鎖對遠端電腦的存取。

WMI 使用 DCOM (Distributed COM) 和 RPC (遠端過程呼叫) 通訊協定來周遊網路。 根據預設,許多防火牆會封鎖DCOM和 RPC流量。 如果您的防火牆封鎖這些通訊協定,您的連線將會失敗。 例如,Microsoft Windows XP Service Pack 2 中的 Windows 防火牆已設定為自動封鎖所有未經請求的網路流量,包括 DCOM 和 WMI。 在其預設設定中,Windows 防火牆會拒絕傳入的 WMI 要求,而且您會收到下列錯誤訊息:

Remote server machine does not exist or is unavailable

另請參閱