Dela via


Visa XML-utdata från WinRM-skript

Windows Fjärrhanteringsskript returnerar XML i stället för objekt. XML-koden är inte i ett läsbart format för människor. Du kan använda metoderna för MSXML API och den förinstallerade XSL-filen för att omvandla data till läsbart format för människor.

Mer information om WinRM XML-utdata och exempel på rå och formaterad XML finns i Scripting in Windows Remote Management.

Kommandoradsverktyget Winrm levereras med en transformeringsfil med namnet WsmTxt.xsl som visar utdata i tabellformat. Om skriptet använder den här filen med MSXML-metoder som utför transformationer ser utdata likadant ut som utdata från verktyget Winrm.

Om du vill formatera råa XML-utdata

  1. Skapa objektet WSMan och skapa en session.

    Set Wsman = CreateObject("Wsman.Automation")
    Set Session = Wsman.CreateSession
    
  2. Skapa MSXML-objekt som representerar XML-svarsutdata och XSL-transformering.

    Set xmlFile = CreateObject( "MSXml.DOMDocument" )
    Set xslFile = CreateObject( "MSXml.DOMDocument" )
    
  3. Hämta data via session objektmetoder.

    xmlResponse = Session.Get("http://schemas.microsoft.com/" & _
        "wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Spooler")
    
  4. Ange svaret på metoden MSXML loadXML och metoden ladda för att transformeringsfilen ska kunna lagras.

    xmlFile.LoadXml(xmlResponse)
    xslFile.Load("WsmTxt.xsl")
    
    
  5. Använd metoden MSXML transformNode och visa eller spara utdata.

    Wscript.Echo xmlFile.TransformNode(xslFile)
    

Följande VBScript-kodexempel visar det fullständiga skriptet.

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)

Lägga till en portabel underrutin för att transformera XML till dina skript

Du kan lägga till en underrutin i skripten som använder den förinstallerade XSL-filen för att konvertera xml-råutdata från ett WinRM-skript till ett tabellformulär.

Följande underrutin använder anrop till MSXML-skriptmetoderna för att ange utdata till 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

Följande underrutin transformerar varje rad i dina data enligt följande exempel.

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 

Om Windows Remote Management

Använda Windows Remote Management

Referens för Windows-fjärrhantering