Compartir a través de


Mostrar la salida XML de scripts WinRM

Los scripts de administración remota de Windows devuelven XML en lugar de objetos. El XML no tiene 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 procesar y formateado, consulte Scripting in Windows Remote Management.

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

Para dar formato a la salida XML

  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 los métodos del 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 guardar 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 siguiente ejemplo de código de VBScript 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 procesar de un script WinRM a 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

usar el de administración remota de Windows

referencia de administración remota de Windows