查询资源的特定实例

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