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,您必須擁有遠端電腦上的本機系統管理員許可權。 如果您未這麼做,將會拒絕該計算機的存取權。
若要驗證命名空間安全性:
- 按兩下 [開始],以滑鼠右鍵按兩下 [我的計算機],然後按兩下 [管理]。
- 在 [計算機管理] 中,展開 [服務和應用程式],以滑鼠右鍵按兩下 [WMI 控制件],然後按兩下 [屬性]。
- 在 [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