Visualizzazione dell'output XML dagli script WinRM
Gli script di Gestione remota Windows restituiscono codice 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 il tuo script fornisce questo file ai metodi MSXML che eseguono le trasformazioni, l'output appare lo stesso dell'output dello strumento Winrm.
Per formattare l'output XML non elaborato
Creare l'oggettoWSMane creare una sessione.
Set Wsman = CreateObject("Wsman.Automation") Set Session = Wsman.CreateSession
Creare oggetti MSXML che rappresentano l'output della risposta XML e la trasformazione XSL.
Set xmlFile = CreateObject( "MSXml.DOMDocument" ) Set xslFile = CreateObject( "MSXml.DOMDocument" )
Ottieni dati tramite i metodi dell'oggetto Session.
xmlResponse = Session.Get("http://schemas.microsoft.com/" & _ "wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Spooler")
Fornire la risposta al metodo loadXML di MSXML e al metodo carica per salvare il file di trasformazione.
xmlFile.LoadXml(xmlResponse) xslFile.Load("WsmTxt.xsl")
Usare 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 sottoroutine portatile per trasformare XML nei tuoi script
È possibile aggiungere una subroutine agli script che utilizza il file XSL preinstallato per convertire l'output XML non elaborato da uno script WinRM in un formato tabulare.
Nella subroutine seguente vengono utilizzate 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
Argomenti correlati