建立 WMI 用戶端

WMI 提供標準化的系統管理基礎結構,可供數個不同的用戶端利用。 這些用戶端的範圍從wmic.exe命令列工具到 System Center Operations Manager。 您可以使用 WMI 腳本 API、原生 C++ API,或使用 System.Management .NET Framework 類別庫命名空間中的類型,來撰寫自己的 WMI 用戶端。

如何建立 WMI 用戶端

WMI 的核心功能包含從 WMI 存放庫擷取物件,以及檢查這些物件的屬性。 您也可以選擇更新這些屬性,或在這些屬性上呼叫方法。 下列範例示範如何執行基本的 WMI 管理工作:擷取本機電腦的名稱。

詞彙 描述
使用 PowerShell 建立用戶端
WMI 和 PowerShell 緊密整合;因此,使用 PowerShell 擷取 WMI 物件只是呼叫 Get-WmiObject Cmdlet。 請注意,為了一致性,第一個程式碼片段會明確陳述許多預設值;第二個假設預設值正確。

PowerShell
#explicitly表示$myComputer = Get-WmiObject -ComputerName 「.」 -Namespace 「root\cimv2」 -Query 「SELECT * FROM Win32_ComputerSystem」 foreach ($computer in $myComputer) { 「System Name: 」 + $computer.name }

#assumes the default values are correct Get-WmiObject Win32_ComputerSystem | Format-Table "Name"

使用 VBScript 建立用戶端

VBScript 是與 WMI 通用的原始指令碼語言。 雖然 PowerShell 變得更受歡迎,但本檔中的許多現有程式碼範例都是以 VBScript 撰寫。 請注意,這個特定的 VBScript 範例會明確指出本機電腦路徑和模擬層級;這不是必要的,但通常是最佳做法。

VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objItem in colItems
    Wscript.Echo "Computer Name: " & objItem.Name
Next

使用 C# (Microsoft.Management.Infrastructure) 建立用戶端

此命名空間包含使用 Managed 程式碼存取 WMI 的目前解決方案,也稱為 Windows Management Infrastructure (MI 或 WMIv2) 。 目前,MI 是用來建立受控管理用戶端的支援技術。 如需詳細資訊,請參閱 如何實作受控 MI 用戶端如何實作原生 MI 用戶端

C#
使用 Microsoft.Management.Infrastructure;...CimSession 會話 = CimSession.Create (「localHost」) ;IEnumerable < CimInstance queryInstance > = session。QueryInstances (@「root\cimv2」, 「WQL」, 「SELECT * FROM Win32_ComputerSystem」) ;

foreach (CimInstance cimObj in queryInstance) { Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString()); }

使用 C# (System.Management) 建立用戶端

此命名空間包含使用 Managed 程式碼存取 WMI 的原始解決方案。 雖然 System.Management 類別仍然可供使用, 但 Microsoft.Management.Infrastructure 類別通常更有效率且更妥善調整。 因此,建議您使用 MI 類別,而不是原始 WMI 類別。

C#
使用 Microsoft.Management.Infrastructure;...CimSession 會話 = CimSession.Create (「localHost」) ;IEnumerable < CimInstance queryInstance > = session。QueryInstances (@「root\cimv2」, 「WQL」, 「SELECT * FROM Win32_ComputerSystem」) ;

foreach (CimInstance cimObj in queryInstance) { Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString()); }

下表列出此章節所涵蓋的主題。

主題 描述
連線到遠端電腦上的 WMI 描述用戶端在遠端電腦上使用 WMI 基礎結構時所發生的一些問題。
腳本和應用程式的 WMI 工作 顯示範例 WMI 用戶端程式代碼。
建立 WMI 應用程式或腳本 提供有關建立各種 WMI 用戶端的資訊。
監視效能資料 描述如何使用 WMI 來監視效能資料。
接收 WMI 事件 描述如何檢視 WMI 事件。
監視事件 描述如何監視 WMI 事件。
使用 WQL 進行查詢 介紹 WMI 查詢語言 (WQL) 。
查詢選擇性功能的狀態 在 Windows 7 中,WMI 實作 Win32_OptionalFeature 類別。 這個類別會擷取電腦上存在之選擇性功能的狀態。
描述 WMI 物件的位置 著重于描述 WMI 受控實體位置的語法。
使用 WMI 存取其他作業系統功能 描述如何撰寫可存取設備磁碟機、Active Directory 和 SNMP 裝置的 WMI 用戶端。
存取 Interop 命名空間中的資料 關聯提供者可讓 Windows Management Instrumentation (WMI) 用戶端周遊及擷取來自不同命名空間的設定檔和相關聯的類別實例。
操作類別和實例資訊 描述 WMI 用戶端必須執行的一般工作。
將類別連結在一起 討論檢視提供者,以及如何將來自多個 WMI 類別的資訊結合在一起。
修改系統登錄 描述 WMI 用戶端如何使用 WMI 來管理系統登錄資訊。