Visualizzazione dell'output XML dagli script WinRM

Gli script di gestione remota Windows restituiscono XML anziché oggetti . Il codice XML non è in un formato leggibile. È possibile usare i metodi dell'API MSXML e il file XSL preinstallato per trasformare i dati in formato leggibile.

Per altre informazioni sull'output XML WinRM ed esempi di CODICE XML non elaborato e formattato, vedere Scripting in Gestione remota Windows.

Lo strumento da riga di comando Winrm include un file di trasformazione denominato WsmTxt.xsl che visualizza l'output in un formato tabulare. Se lo script fornisce questo file ai metodi MSXML che eseguono le tranforme, l'output viene visualizzato come l'output dello strumento Winrm .

Per formattare l'output XML non elaborato

  1. Creare l'oggetto WSMan e creare una sessione.

    Set Wsman = CreateObject("Wsman.Automation")
    Set Session = Wsman.CreateSession
    
  2. Creare oggetti MSXML che rappresentano l'output della risposta XML e la trasformazione XSL.

    Set xmlFile = CreateObject( "MSXml.DOMDocument" )
    Set xslFile = CreateObject( "MSXml.DOMDocument" )
    
  3. Ottenere dati tramite i metodi dell'oggetto Session .

    xmlResponse = Session.Get("http://schemas.microsoft.com/" & _
        "wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Spooler")
    
  4. Fornire la risposta al metodo loadXML MSXML e al metodo load per archiviare il file di trasformazione.

    xmlFile.LoadXml(xmlResponse)
    xslFile.Load("WsmTxt.xsl")
    
    
  5. Utilizzare il metodo transformNode MSXML e visualizzare o salvare l'output.

    Wscript.Echo xmlFile.TransformNode(xslFile)
    

Nell'esempio di codice VBScript seguente viene illustrato lo 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)

Aggiunta di una subroutine portabile per trasformare XML agli script

Puoi aggiungere una subroutine agli script che usa il file XSL preinstallato per convertire l'output XML non elaborato da uno script WinRM in un formato tabulare.

La subroutine seguente usa le chiamate ai metodi di scripting MSXML per fornire l'output 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 subroutine seguente trasforma ogni riga dei dati, come illustrato nell'esempio seguente.

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 

Informazioni su Gestione remota Windows

Uso di Gestione remota Windows

Informazioni di riferimento sulla gestione remota di Windows