查询资源的特定实例
对 Session.Enumerate 的 调用具有将枚举缩小为查询的可选参数。 由于 WinRM 脚本 API 和 WinRM C++ API 基于基础WS-Management协议进行密切建模,因此参数使用与协议相同的查询术语- 筛选器 和 筛选器方言。
可以使用 Session.Enumerate 的筛选器和方言参数,也可以构造并提供 ResourceLocator 对象和 AddSelector 方法,但不能同时执行这两种操作。
此过程对绑定并启用了 TCP/IP 的网络适配器执行查询。 查询请求将 IpEnabled 属性设置为 True 的所有Win32_NetworkAdapterConfiguration实例。 除了添加 筛选器 和 方言外,查询的处理方式与简单枚举类似。
在此示例中,Resource 常量的资源名称由星号“*”表示,因为 strFilter 字符串中已提到类名Win32_NetworkAdapterConfiguration。
查询资源的特定实例
为便于阅读,请将 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"
创建会话。
Set objWsman = CreateObject("Wsman.Automation") Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
构造筛选器字符串。 Windows 远程管理支持 WQL 作为筛选器方言。
strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"
在 flags 参数中设置任何必需的枚举常量。
请注意,如果标志包含 枚举常量WSManFlagHierarchyDeepBasePropsOnly 或 WSManFlagHierarchyShallow ,则 WinRM 服务 ERROR_WSMAN_POLYMORPHISM_MODE_UNSUPPORTED返回错误代码。
调用 Session.Enumerate 方法。 此调用启动枚举。 Session.Enumerate 方法建立一个在 Enumerator 对象中维护的WS-Management协议枚举上下文。
Set objResultSet = objSession.Enumerate(Resource, strFilter, Dialect)
调用 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
相关主题
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈