Anzeigen der XML-Ausgabe aus WinRM-Skripts

Windows-Remoteverwaltungsskripts geben XML anstelle von Objekten zurück. Der XML-Code hat kein für Menschen lesbares Format. Sie können die Methoden der MSXML-API und der vorinstallierten XSL-Datei verwenden, um die Daten in ein lesbares Format zu transformieren.

Weitere Informationen zur WinRM-XML-Ausgabe und Beispiele für unformatierte und formatierte XML-Dateien finden Sie unter Skripterstellung in der Windows-Remoteverwaltung.

Das Winrm-Befehlszeilentool enthält eine Transformationsdatei namens WsmTxt.xsl, die die Ausgabe in tabellarischer Form anzeigt. Wenn Ihr Skript diese Datei für die MSXML-Methoden bereitstellt, die Tranforms durchführen, wird die Ausgabe mit der Ausgabe des Winrm-Tools identisch angezeigt.

So formatieren Sie die UNformatierte XML-Ausgabe

  1. Erstellen Sie das WSMan-Objekt , und erstellen Sie eine Sitzung.

    Set Wsman = CreateObject("Wsman.Automation")
    Set Session = Wsman.CreateSession
    
  2. Erstellen Sie MSXML-Objekte, die die XML-Antwortausgabe und die XSL-Transformation darstellen.

    Set xmlFile = CreateObject( "MSXml.DOMDocument" )
    Set xslFile = CreateObject( "MSXml.DOMDocument" )
    
  3. Abrufen von Daten über Session-Objektmethoden .

    xmlResponse = Session.Get("http://schemas.microsoft.com/" & _
        "wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Spooler")
    
  4. Geben Sie die Antwort für die MSXML loadXML-Methode und die Load-Methode an, um die Transformationsdatei zu speichern.

    xmlFile.LoadXml(xmlResponse)
    xslFile.Load("WsmTxt.xsl")
    
    
  5. Verwenden Sie die MSXML transformNode-Methode , und zeigen Sie die Ausgabe an oder speichern Sie sie.

    Wscript.Echo xmlFile.TransformNode(xslFile)
    

Das folgende VBScript-Codebeispiel zeigt das vollständige Skript.

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)

Hinzufügen einer portablen Unterroutine zum Transformieren von XML in Ihre Skripts

Sie können Ihren Skripts eine Unterroutine hinzufügen, die die vorinstallierte XSL-Datei verwendet, um die unformatierte XML-Ausgabe eines WinRM-Skripts in ein tabellarisches Formular zu konvertieren.

Die folgende Unterroutine verwendet Aufrufe der MSXML-Skriptmethoden, um die Ausgabe an WsmTxt.xsl zu liefern.

'****************************************************
' 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

Die folgende Unterroutine transformiert jede Zeile Ihrer Daten, wie im folgenden Beispiel gezeigt.

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 

Informationen zur Windows-Remoteverwaltung

Verwenden der Windows-Remoteverwaltung

Windows-Remoteverwaltungsreferenz