主題 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 架構企業管理 (Web-Based Enterprise Management,WBEM) 方面的實作,這是一種開發標準技術 的業界措施,用於存取企業環境中的管理資訊。WMI 使用通用訊息模型 (CIM) 業界 標準來代表系統、應用程式、網路、裝置和其他受管理元件,CIM 由分散式管理任 務推動小組 (Distributed Management Task Force,DMTF)開發與維護。您可以使用 WMI 管理本機及遠端電腦。例如,可以使用 WMI 執行下列動作: -- 啟動遠端電腦上的處理序。 -- 從遠端重新啟動電腦。 -- 取得本機或遠端電腦上安裝的應用程式清單。 -- 查詢本機或遠端電腦上的 Windows 事件記錄檔。 Windows PowerShell 的 WMI Cmdlet Windows PowerShell 透過一組預設可用於 Windows PowerShell 的 Cmdlet 來 實作 WMI 功能。您可以使用這些 Cmdlet,完成管理本機和遠端電腦所需的端對端 工作。 包括下列 WMI Cmdlet。 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 服務的相關資訊。 C:\PS> get-wmiobject -query "select * from win32_service where name='WinRM'" -computername server01, server01, server03 下列命令比較複雜,會結束一個程式的所有執行個體。 C:\PS> notepad.exe C:\PS> $np = get-wmiobject -query "select * from win32_process where name='notepad.exe'" C:\PS> $np | remove-wmiobject WMI 架構的遠端功能 透過 WMI 管理本機系統的功能固然好用,但 WMI 之所以成為強大的系統管理工 具,它的遠端功能才是主要原因。WMI 採用 Microsoft 的分散式元件物件模式 (Distributed Component Object Model,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 handlecount __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 進行連接。您可能會收到下列錯誤訊息: 「遠端伺服器電腦不存在或無法使用」 如果收到這則錯誤訊息,請確該認電腦是否在線上。 請嘗試 Ping 該遠端電腦。 問題 2:您沒有遠端電腦的本機系統管理員權限。 若想從遠端使用 WMI,您必須具有遠端電腦的本機系統管理員權限。如果您沒有此 權限,存取該電腦會遭拒。 若要確認命名空間安全性: a. 按一下 [開始]、以滑鼠右鍵按一下 [我的電腦],然後按一下 [管理]。 b. 在 [電腦管理] 中展開 [服務及應用程式],以滑鼠右鍵按一下 [WMI 控 制],然後按一下 [內容]。 c. 在 [WMI 控制內容] 對話方塊中,按一下 [安全性] 索引標籤。 問題 3:防火牆封鎖對遠端電腦的存取。 WMI 使用 DCOM (分散式 COM) 和 RPC (遠端程序呼叫) 通訊協定來周遊網路。許 多防火牆預設都會封鎖 DCOM 和 RPC 流量。如果您的防火牆會封鎖這些通訊協定,連線就會失敗。例如, Microsoft Windows XP Service Pack 2 的 Windows 防火牆即設定為自動封鎖所 有未經同意的網路流量,包括 DCOM 和 WMI。Windows 防火牆的預設設定會拒絕 內送 WMI 要求,因此會收到下列錯誤訊息: 「遠端伺服器電腦不存在或無法使用」 WMI 的其他相關資訊 如需 WMI 的詳細資訊,請參閱 MSDN (Microsoft Developer Network) 文件庫 中的下列主題: <關於 WMI>(英文) https://go.microsoft.com/fwlink/?LinkId=142212 <WMI 疑難排解>(英文) https://go.microsoft.com/fwlink/?LinkId=142213 另外,也可以參閱 Microsoft TechNet Script Center 中的<Windows Management Instrumentation 的秘密 - 疑難排解和秘訣>(英文): https://go.microsoft.com/fwlink/?LinkId=142214 請參閱 線上版本:https://go.microsoft.com/fwlink/?LinkId=142219 Get-WmiObject Invoke-WmiMethod Register-WmiEvent Remove-WmiObject Set-WmiInstance