Affichage de la sortie XML des scripts WinRM

Windows Les scripts de gestion à distance renvoient du code XML plutôt que des objets. Le code XML n’est pas dans un format explicite. vous pouvez utiliser les méthodes de l’API MSXML et le fichier XSL préinstallé pour transformer les données au format lisible.

pour plus d’informations sur la sortie xml WinRM et des exemples de données brutes et au format xml, consultez script dans Windows Remote Management.

L’outil de ligne de commande WinRM est fourni avec un fichier de transformation nommé WsmTxt. xsl qui affiche la sortie sous forme de tableau. si votre script fournit ce fichier aux méthodes de MSXML qui exécutent transforme, la sortie apparaît comme la sortie de l’outil Winrm .

Pour mettre en forme une sortie XML brute

  1. Créez l’objet WSMan et créez une session.

    Set Wsman = CreateObject("Wsman.Automation")
    Set Session = Wsman.CreateSession
    
  2. créez MSXML objets qui représentent la sortie de réponse XML et la transformation XSL.

    Set xmlFile = CreateObject( "MSXml.DOMDocument" )
    Set xslFile = CreateObject( "MSXml.DOMDocument" )
    
  3. Obtenir des données par le biais de méthodes d’objet de session .

    xmlResponse = Session.Get("http://schemas.microsoft.com/" & _
        "wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Spooler")
    
  4. fournissez la réponse à la méthode MSXML loadXML et à la méthode load pour stocker le fichier de transformation.

    xmlFile.LoadXml(xmlResponse)
    xslFile.Load("WsmTxt.xsl")
    
    
  5. utilisez la méthode MSXML transformNode et affichez ou enregistrez la sortie.

    Wscript.Echo xmlFile.TransformNode(xslFile)
    

L’exemple de code VBScript suivant montre le script complet.

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)

Ajout d’une sous-routine portable pour transformer du code XML en scripts

Vous pouvez ajouter une sous-routine à vos scripts qui utilisent le fichier XSL préinstallé pour convertir la sortie XML brute d’un script WinRM en un format tabulaire.

la sous-routine suivante utilise des appels aux méthodes de script MSXML pour fournir la sortie à 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 sous-routine suivante transforme chaque ligne de vos données comme indiqué dans l’exemple suivant.

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 

à propos de Windows Remote Management

utilisation de Windows Remote Management

Windows Informations de référence sur la gestion à distance