共用方式為


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

另請參閱