共用方式為


Windows 遠端管理和 WMI

Windows 遠端管理可用來擷取 Windows Management Instrumentation 所公開的數據(WMIMI)。 您可以使用使用 WinRM 腳稿 API 或透過 Winrm 命令行工具取得 WMI 數據。

WinRM 支援大部分熟悉的 WMI 類別和作業,包括內嵌物件。 WinRM 可以利用 WMI 收集 資源的相關數據, 或管理 Windows作系統上的資源。 這表示您可以透過現有的一組 WMI 類別,取得企業中有關對象的數據,例如磁碟、網路適配器、服務或進程,。 您也可以從標準 WMI IPMI 提供者存取可用的硬體數據。

識別 WMI 資源

您可以將 WMI 類別參考為 WinRM 和 WS-Management 通訊協定中的 資源:服務或磁碟等受控實體類型。

WMI 類別或方法是由 URI識別,就像使用 WS-Management 通訊協定時的任何其他資源一樣。 URI 可以指定 WMI 資源(類別)、WMI 動作(方法),或識別透過網路傳送訊息中類別的特定實例。 如需詳細資訊,請參閱 資源 URI

建構 WMI 類別的 URI 前置詞

URI 前置詞包含固定部分和 WMI 命名空間。 例如,Windows Server 中包含前置詞固定部分的 URI 前置詞為:http://schemas.microsoft.com/wbem/wsman/1/wmi/<WmiNamespace>。 這可讓任何 WMI 命名空間產生 URI 前置詞。 例如,若要存取 root\default WMI 命名空間,請使用下列 URI 前置詞:http://schemas.microsoft.com/wbem/wsman/1/wmi/root/default/

管理的大部分 WMI 類別都位於 root\cimv2 命名空間中。 若要存取 root\cimv2 命名空間中的類別和實例,請使用 URI 前置詞:http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/。 如需詳細資訊,請參閱 資源 URI

產生 WMI 類別的完整 URI

您提供給 Winrm 命令行工具或腳本的 URI 是由前置詞加上資源規格所組成。

下列程式描述如何產生資源 URI,以取得 WMI 類別,或用於列舉作業。

產生 WMI 類別的資源 URI

  1. 從前置詞開始,表示應該使用 WS-Management 通訊協議架構。

    https://schemas.microsoft.com/wbem/wsman/1

    WMI 類別的資源 URI 前置詞一律相同。 如需詳細資訊,請參閱 URI 前置詞

  2. 將 WMI 命名空間新增至前置詞。

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/

  3. 新增類別名稱。

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service

  4. 若要設定屬性的值,或叫用特定方法,請為 類別新增必要的索引鍵值或值。

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Winmgmt

    如果您將索引鍵值保留空白,則不會改變原始屬性值。

    注意

    將索引鍵值保留空白會將屬性值設定為 NULL

     

使用 WinRM 尋找 WMI 資源

您可以透過命令行工具、Winrm,或透過使用 WinRM 腳本 API的 Visual Basic 腳本取得 WMI 數據。 您不會使用 WMI 路徑 來尋找資源。 相反地,您會將 WMI 命名空間和階層轉換成 URI

WMI 類別的 WinRM URI 包含兩個部分:URI 前置詞 和您想要存取的類別。

例如,下列 URI 可以提供給 Session.Enumerate 方法來列出電腦上的所有服務。 URI 前置詞是 http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/,而 類別 Win32_Service

strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"

在 WMI 中,以數種方式列出資源或類別之所有實例的數據:

在 WinRM 中,有一種方式可列出資源的所有實例:Session.Enumerate

strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service"
Set colServices = objSession.Enumerate( strResource )

尋找 WMI 資源的特定實例

在 WMI 中,您可以藉由指定索引鍵屬性的值,或查詢符合屬性值清單的實例,來指定類別的特定實例。 索引鍵屬性具有 WMI 金鑰限定子

您可以透過數種方式取得類別的特定實例:

  • 使用 篩選條件方言 參數來建立查詢的呼叫 Session.Enumerate

    RemoteComputer = "servername.domain.com"
    strDialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"
    strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
    Set objWsman = CreateObject("Wsman.Automation")
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
    
    strFilter = "SELECT * FROM Win32_Share WHERE Name='Admin$'"
    Set objResultSet = objSession.Enumerate(strResource, strFilter, strDialect)
    
  • 呼叫 SWbemServices.Get。 針對 Session.Get,您必須提供一或多個特定的索引鍵值,前面加上問號 (?)。

    特定實體的 URI 格式 http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/WMI_Class?Key1=Value

    strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=winmgmt"
    

    WMI 類別可能有多個索引鍵。 機碼名稱/值組會以 “+” 符號分隔。 在這裡情況下,格式為:http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Key1=Value1+Key2=Value2

    取得單一 WMI 物件的 WinRM 語法與 WMI 不同。 單一實例是定義的 WMI 類別,因此只允許一個實例。 Win32_CurrentTimeWin32_WMISetting 是 WMI 單一類別的範例。

    單一的 WMI 語法會顯示在下列 VBScript 程式代碼範例中。

    Set TimeObject = objWMIService.Get("Win32_CurrentTime=@")
    

    下列範例顯示不使用 “@” 的 WinRM 單一語法。

    strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"
    
  • 選取器 新增至 ResourceLocatorIWSManResourceLocator 物件。

    下列 VBScript 程式代碼範例示範如何使用選取器來取得特定實例 Win32_Processor

    strUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Processor"
    Set objWsman = CreateObject("Wsman.Automation")
    Set Session = objWsman.CreateSession
    Set Locator = objWsman.CreateResourceLocator(strUri)
    Locator.AddSelector "DeviceID", "CPU0"
    

關於 Windows 遠端管理

URI 前置詞

資源 URI

Windows 遠端管理 中的 腳本