Compartir a través de


Consulta de instancias específicas de un recurso

La llamada a Session.Enumerate tiene parámetros opcionales que reducen la enumeración a una consulta. Debido al WinRM Scripting API y el WinRM C++ API están estrechamente modelados en el protocolo subyacente WS-Management, los parámetros utilizan la misma terminología de consulta que el protocolo —filtro y dialecto de filtro.

Puede utilizar los parámetros filter y dialect de Session.Enumerate o puede construir y suministrar un ResourceLocator objeto y el AddSelector método, pero no puede hacer ambas cosas.

Este procedimiento ejecuta una consulta para los adaptadores de red que tienen TCP/IP vinculado y habilitado. La consulta solicita todas las instancias de Win32_NetworkAdapterConfiguration que tienen IpEnabled propiedad establece que verdad. Excepto por la adición del filtro y dialecto, la consulta se maneja como una simple enumeración.

En este ejemplo, el nombre del recurso para la constante Resource se representa con un asterisco "*" porque el nombre de la clase, Win32_NetworkAdapterConfiguration, ya mencionada en el strFilter cadena.

Para buscar 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. Construye la cadena de filtros. La gestión remota de Windows admite WQL como el dialecto de filtro.

    strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"
    
  4. Establecer cualquier requerido constantes de enumeración en el banderas parámetro.

    Tenga en cuenta que si las banderas incluyen el constantes de enumeración WSManFlagHierarchyDeepBasePropsOnly o WSManFlagHierarchyShallow then WinRM servicio devuelve el código del error ERROR_WSMAN_POLYMORPHISM_MODE_UNSUPPORTED.

  5. Llame al Session.Enumerate método. Esta llamada inicia una enumeración. E Session.Enumerate establece un contexto de enumeración del protocolo WS-Management, mantenido en el método Enumerador objecto.

    Set objResultSet = objSession.Enumerate(Resource, strFilter, Dialect)
    
  6. Llame al Enumerator.ReadItem método para obtener el siguiente elemento de los resultados. En el protocolo WS-Management, esto corresponde a la operación pull. Use el Enumerator.AtEndOfStream como control para saber cuándo dejar de leer.

    While Not objResultSet.AtEndOfStream
        DisplayOutput(objResultSet.ReadItem)
    Wend
    

El siguiente ejemplo de código VBScript 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

Usar Administración remota de Windows

Enumerar o listar todas las instancias de un recurso

ResourceLocator