Запрос для конкретных экземпляров ресурса
Вызов Session.Enumerate имеет необязательные параметры, которые сужают перечисление в запрос. Так как API скриптов WinRM и API WinRM C++ тесно смоделированы по базовому протоколу WS-Management, параметры используют ту же терминологию для запросов, что и протокол — фильтр и диалект фильтра.
Вы можете использовать параметры фильтра и диалекта Session.Enumerate или создать и предоставить объект ResourceLocator и метод AddSelector , но нельзя сделать оба варианта.
Эта процедура выполняет запрос для сетевых адаптеров, которые привязаны к TCP/IP и включены. Запрос запрашивает все экземпляры Win32_NetworkAdapterConfiguration , для которых свойству IpEnabled присвоено значение True. За исключением добавления фильтра и диалекта, запрос обрабатывается как простое перечисление.
В этом примере имя ресурса для константы Resource представлено звездочкой "*", так как имя класса , Win32_NetworkAdapterConfiguration, уже упоминается в строке strFilter .
Запрос конкретных экземпляров ресурса
Для удобства чтения определите 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 устанавливает контекст перечисления WS-Management протокола, который поддерживается в объекте Enumerator .
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 Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по