Freigeben über


Anzeigen der XML-Ausgabe von WinRM-Skripts

Windows-Remoteverwaltungsskripts geben XML anstelle von Objekten zurück. Der XML-Code weist kein lesbares Format auf. 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 -Beispielen für unformatierte und formatierte XML finden Sie unter Scripting in Windows Remote Management.

Das Befehlszeilentool Winrm enthält eine Transformationsdatei mit dem Namen WsmTxt.xsl, die die Ausgabe in tabellarischer Form anzeigt. Wenn Ihr Skript diese Datei den MSXML-Methoden bereitstellt, die Transformationen ausführen, wird die Ausgabe mit der Ausgabe des Winrm-Tools identisch angezeigt.

So formatieren Sie die rohe 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 auf die MSXML loadXML-Methode und die Lademethode 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 zu Ihren Skripts

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

Die folgende Unterroutine verwendet Aufrufe der MSXML-Skriptingmethoden, um die Ausgabe an WsmTxt.xsl anzugeben.

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