Mostrar la salida XML de scripts de WinRM

Los scripts de administración remota de Windows devuelven XML en lugar de objetos. El XML no está en un formato legible. Puede usar los métodos de la API MSXML y el archivo XSL preinstalado para transformar los datos en formato legible.

Para obtener más información sobre la salida XML de WinRM y ejemplos de XML sin formato y sin formato, vea Scripting in Windows Remote Management.

La herramienta de línea de comandos de Winrm incluye un archivo de transformación denominado WsmTxt.xsl que muestra la salida en un formato tabular. Si el script proporciona este archivo a los métodos MSXML que realizan tranformes, la salida aparece igual que la salida de la herramienta Winrm .

Para dar formato a la salida XML sin formato

  1. Cree el objeto WSMan y cree una sesión.

    Set Wsman = CreateObject("Wsman.Automation")
    Set Session = Wsman.CreateSession
    
  2. Cree objetos MSXML que representen la salida de respuesta XML y la transformación XSL.

    Set xmlFile = CreateObject( "MSXml.DOMDocument" )
    Set xslFile = CreateObject( "MSXml.DOMDocument" )
    
  3. Obtenga datos a través de métodos de objeto Session .

    xmlResponse = Session.Get("http://schemas.microsoft.com/" & _
        "wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Spooler")
    
  4. Proporcione la respuesta al método loadXML de MSXML y al método load para almacenar el archivo de transformación.

    xmlFile.LoadXml(xmlResponse)
    xslFile.Load("WsmTxt.xsl")
    
    
  5. Use el método transformNode de MSXML y muestre o guarde la salida.

    Wscript.Echo xmlFile.TransformNode(xslFile)
    

En el ejemplo de código de VBScript siguiente se muestra el script completo.

Set Wsman = CreateObject("Wsman.Automation")
Set Session = Wsman.CreateSession
Set xmlFile = CreateObject( "MSXml.DOMDocument" )
Set xslFile = CreateObject( "MSXml.DOMDocument" )

xmlResponse = Session.Get("http://schemas.microsoft.com/" & _
    "wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Spooler")
xmlFile.LoadXml(xmlResponse)
xslFile.Load("WsmTxt.xsl")
Wscript.Echo xmlFile.TransformNode(xslFile)

Adición de una subrutina portátil para transformar XML en los scripts

Puede agregar una subrutina a los scripts que usen el archivo XSL preinstalado para convertir la salida XML sin formato de un script WinRM en un formulario tabular.

La subrutina siguiente usa llamadas a los métodos de scripting MSXML para proporcionar la salida a WsmTxt.xsl.

'****************************************************
' Displays WinRM XML message using built-in XSL
'****************************************************
Sub DisplayOutput(strWinRMXml)
    Set xmlFile = CreateObject("MSXml.DOMDocument") 
    Set xslFile = CreateObject("MSXml.DOMDocument")
    xmlFile.LoadXml(strWinRMXml)
    xslFile.Load("WsmTxt.xsl")
    Wscript.Echo xmlFile.TransformNode(xslFile)
End Sub

La subrutina siguiente transforma cada línea de los datos como se muestra en el ejemplo siguiente.

Const RemoteComputer = "servername.domain.com"
Set objWsman = CreateObject("WSMan.Automation")
Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
strResource = "http://schemas.microsoft.com/" & _
    "wbem/wsman/1/wmi/root/cimv2/Win32_LogicalDisk"
Set objResultSet = objSession.Enumerate(strResource)
While Not objResultSet.AtEndOfStream
    DisplayOutput(objResultSet.ReadItem)
Wend
Sub DisplayOutput(strWinRMXml)
    Set xmlFile = CreateObject("MSXml.DOMDocument") 
    Set xslFile = CreateObject("MSXml.DOMDocument")
    xmlFile.LoadXml(strWinRMXml)
    xslFile.Load("WsmTxt.xsl")
    Wscript.Echo xmlFile.TransformNode(xslFile) 
End Sub 

Acerca de la administración remota de Windows

Uso de la administración remota de Windows

Referencia de administración remota de Windows