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

  1. 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"
    
  2. Crear una sesión.

    Set objWsman = CreateObject("Wsman.Automation")
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
    
  3. Construya la cadena de filtro. Administración remota de Windows admite WQL como dialecto de filtro.

    strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"
    
  4. 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.

  5. 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)
    
  6. 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

Uso de la administración remota de Windows

Enumerar o enumerar todas las instancias de un recurso

ResourceLocator