查詢資源的特定實例

對 Session.Enumerate的呼叫具有選擇性參數,會將列舉範圍縮小為查詢。 由於 WinRM 腳本 APIWinRM C++ API 在基礎WS-Management通訊協定上緊密建立模型,因此參數會使用與通訊協定相同的術語來查詢—篩選篩選方言

您可以使用 Session.Enumerate 的篩選和方言參數,也可以建構並提供 ResourceLocator 物件和 AddSelector 方法,但無法同時這麼做。

此程式會針對已系結並啟用 TCP/IP 的網路介面卡執行查詢。 此查詢會要求ipEnabled屬性設定為True的所有Win32_NetworkAdapterConfiguration實例。 除了新增 篩選言之外,查詢會像簡單的列舉一樣處理。

在此範例中,Resource 常數的資源名稱是以星號 「*」 表示,因為strFilter字串中已經提及類別名稱Win32_NetworkAdapterConfiguration

查詢資源的特定實例

  1. 為了方便閱讀,請將 URI 定義為常數。

    Const RemoteComputer = "servername.domain.com"
    Const Resource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
    Const Dialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"
    
  2. 建立工作階段。

    Set objWsman = CreateObject("Wsman.Automation")
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
    
  3. 建構篩選字串。 Windows 遠端系統管理支援 WQL 作為篩選方言。

    strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"
    
  4. flags參數中設定任何必要的列舉常數

    請注意,如果旗標包含 列舉常數WSManFlagHierarchyDeepBasePropsOnlyWSManFlagHierarchyShallow ,則 WinRM 服務會傳回錯誤碼 ERROR_WSMAN_POLYMORPHISM_MODE_UNSUPPORTED

  5. 呼叫 Session.Enumerate 方法。 此呼叫會啟動列舉。 Session.Enumerate方法會建立在Enumerator物件中維護的WS-Management通訊協定列舉內容。

    Set objResultSet = objSession.Enumerate(Resource, strFilter, Dialect)
    
  6. 呼叫 Enumerator.ReadItem 方法,以取得結果的下一個專案。 在WS-Management通訊協定中,這會對應至提取作業。 使用 Enumerator.AtEndOfStream 方法做為控制項,以瞭解何時停止讀取。

    While Not objResultSet.AtEndOfStream
        DisplayOutput(objResultSet.ReadItem)
    Wend
    

下列 VBScript 程式碼範例會顯示完整的腳本。

Const RemoteComputer = "servername.domain.com"
Const Resource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
Const Dialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"

Set objWsman = CreateObject("Wsman.Automation")
Set objSession = objWsman.CreateSession("https://" & RemoteComputer)

strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"

Set objResultSet = objSession.Enumerate(Resource, strFilter, Dialect)

While Not objResultSet.AtEndOfStream
    DisplayOutput(objResultSet.ReadItem)
Wend

'****************************************************
' Displays WinRM XML message using built-in XSL
'****************************************************
Sub DisplayOutput(strWinRMXml)
    Dim xmlFile, xslFile
    Set xmlFile = CreateObject("MSXml2.DOMDocument.3.0") 
    Set xslFile = CreateObject("MSXml2.DOMDocument.3.0")
    xmlFile.LoadXml(strWinRMXml)
    xslFile.Load("WsmTxt.xsl")
    Wscript.Echo xmlFile.TransformNode(xslFile) 
End Sub

使用 Windows 遠端系統管理

列舉或列出資源的所有實例

ResourceLocator