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
Skapa objektet WSMan och skapa en session.
Set Wsman = CreateObject("Wsman.Automation") Set Session = Wsman.CreateSession
Skapa MSXML-objekt som representerar XML-svarsutdata och XSL-transformering.
Set xmlFile = CreateObject( "MSXml.DOMDocument" ) Set xslFile = CreateObject( "MSXml.DOMDocument" )
Hämta data via session objektmetoder.
xmlResponse = Session.Get("http://schemas.microsoft.com/" & _ "wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Spooler")
Ange svaret på metoden MSXML loadXML och metoden ladda för att transformeringsfilen ska kunna lagras.
xmlFile.LoadXml(xmlResponse) xslFile.Load("WsmTxt.xsl")
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
Relaterade ämnen