Consulta de instancias específicas de un recurso
La llamada a Session.Enumerate tiene parámetros opcionales que limitan la enumeración a una consulta. Dado que la API de scripting de WinRM y la API de C++ de WinRM se modelan estrechamente en el protocolo WS-Management subyacente, los parámetros usan la misma terminología para realizar consultas que el protocolo, filtrar y filtrar dialecto.
Puede usar los parámetros filter y dialecto de Session.Enumerate o puede construir y proporcionar un objeto ResourceLocator y el método AddSelector , pero no puede hacer ambos.
Este procedimiento ejecuta una consulta para adaptadores de red que tienen TCP/IP enlazado y habilitado. La consulta solicita todas las instancias de Win32_NetworkAdapterConfiguration que tienen la propiedad IpEnabled establecida en True. Excepto por la adición del filtro y el dialecto, la consulta se controla como una enumeración simple.
En este ejemplo, el nombre del recurso de la constante Resource se representa mediante un asterisco "*" porque el nombre de la clase, Win32_NetworkAdapterConfiguration, ya se menciona en la cadena strFilter .
Para consultar instancias específicas de un recurso
Para facilitar la lectura, defina los URI como constantes.
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"
Crear una sesión.
Set objWsman = CreateObject("Wsman.Automation") Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
Construya la cadena de filtro. Administración remota de Windows admite WQL como dialecto de filtro.
strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"
Establezca las constantes de enumeración necesarias en el parámetro flags .
Tenga en cuenta que si las marcas incluyen las constantes de enumeraciónWSManFlagHierarchyDeepBasePropsOnly o WSManFlagHierarchyShallow , el servicio WinRM devuelve el código de error ERROR_WSMAN_POLYMORPHISM_MODE_UNSUPPORTED.
Llame al método Session.Enumerate . Esta llamada inicia una enumeración. El método Session.Enumerate establece un contexto de enumeración de protocolo WS-Management, mantenido en el objeto Enumerador .
Set objResultSet = objSession.Enumerate(Resource, strFilter, Dialect)
Llame al método Enumerator.ReadItem para obtener el siguiente elemento de los resultados. En WS-Management protocolo, esto corresponde a la operación de extracción. Use el método Enumerator.AtEndOfStream como control para saber cuándo detener la lectura.
While Not objResultSet.AtEndOfStream DisplayOutput(objResultSet.ReadItem) Wend
En el ejemplo de código de VBScript siguiente se muestra el script completo.
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
Temas relacionados
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de