Compartilhar via


Exibindo a saída XML de scripts WinRM

Windows scripts de Gerenciamento Remoto retornam XML em vez de objetos. O XML não está em um formato legível por humanos. Você pode usar os métodos da API MSXML e do arquivo XSL pré-instalado para transformar os dados em formato legível por humanos.

Para obter mais informações sobre a saída do WinRM XML e exemplos de XML bruto e formatado, consulte Scripts em Windows Gerenciamento Remoto.

A ferramenta de linha de comando do Winrm vem com um arquivo de transformação chamado WsmTxt.xsl que exibe a saída em um formulário tabular. Se o script fornecer esse arquivo para os métodos MSXML que executam tranformes, a saída aparecerá da mesma forma que a saída da ferramenta Winrm.

Para formatar a saída XML bruta

  1. Crie o objeto WSMan e crie uma sessão.

    Set Wsman = CreateObject("Wsman.Automation")
    Set Session = Wsman.CreateSession
    
  2. Crie MSXML objetos que representam a saída de resposta XML e a transformação XSL.

    Set xmlFile = CreateObject( "MSXml.DOMDocument" )
    Set xslFile = CreateObject( "MSXml.DOMDocument" )
    
  3. Obtenha dados por meio de métodos de objeto Session .

    xmlResponse = Session.Get("http://schemas.microsoft.com/" & _
        "wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Spooler")
    
  4. Forneça a resposta ao método loadXML MSXML e ao método de carga para armazenar o arquivo de transformação.

    xmlFile.LoadXml(xmlResponse)
    xslFile.Load("WsmTxt.xsl")
    
    
  5. Use o método transformNode MSXML e exiba ou salve a saída.

    Wscript.Echo xmlFile.TransformNode(xslFile)
    

O exemplo de código VBScript a seguir mostra o 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)

Adicionando uma sub-rotina portátil para transformar XML em seus scripts

Você pode adicionar uma sub-rotina aos scripts que usa o arquivo XSL pré-instalado para converter a saída XML bruta de um script WinRM em um formulário tabular.

A sub-rotina a seguir usa chamadas para os métodos de script MSXML para fornecer a saída para 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

A sub-rotina a seguir transforma cada linha de seus dados, conforme mostrado no exemplo a seguir.

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 

Sobre Windows Gerenciamento Remoto

Usando Windows Gerenciamento Remoto

Referência de gerenciamento remoto Windows