Отображение выходных данных XML из скриптов WinRM

Скрипты удаленного управления Windows возвращают XML, а не объекты. XML-код не имеет удобочитаемого формата. Для преобразования данных в удобочитаемый формат можно использовать методы API MSXML и предустановленный XSL-файл.

Дополнительные сведения о выходных данных WINRM XML и примерах необработанного и форматированного XML-кода см. в статье Создание скриптов в удаленном управлении Windows.

Программа командной строки Winrm поставляется с файлом преобразования с именем WsmTxt.xsl, который отображает выходные данные в табличной форме. Если скрипт предоставляет этот файл методам MSXML, выполняющим трансформы, выходные данные будут совпадать с выходными данными средства Winrm .

Форматирование выходных данных XML

  1. Создайте объект WSMan и сеанс.

    Set Wsman = CreateObject("Wsman.Automation")
    Set Session = Wsman.CreateSession
    
  2. Создайте объекты MSXML, представляющие выходные данные ОТВЕТА XML и преобразование XSL.

    Set xmlFile = CreateObject( "MSXml.DOMDocument" )
    Set xslFile = CreateObject( "MSXml.DOMDocument" )
    
  3. Получение данных с помощью методов объекта Session .

    xmlResponse = Session.Get("http://schemas.microsoft.com/" & _
        "wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Spooler")
    
  4. Предоставьте ответ методу MSXML loadXML и методу load для хранения файла преобразования.

    xmlFile.LoadXml(xmlResponse)
    xslFile.Load("WsmTxt.xsl")
    
    
  5. Используйте метод MSXML transformNode и отобразите или сохраните выходные данные.

    Wscript.Echo xmlFile.TransformNode(xslFile)
    

В следующем примере кода VBScript показан полный скрипт.

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)

Добавление переносимой подпрограммы для преобразования XML в скрипты

В скрипты можно добавить подпрограмму, которая использует предустановленный XSL-файл для преобразования необработанных выходных данных XML из скрипта WinRM в табличную форму.

Следующая подпрограмма использует вызовы методов скриптов MSXML для предоставления выходных данных 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

Следующая подпрограмма преобразует каждую строку данных, как показано в следующем примере.

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 

Сведения об удаленном управлении Windows

Использование удаленного управления Windows

Справочник по удаленному управлению Windows