Affichage de la sortie XML à partir de scripts WinRM

Les scripts de gestion à distance Windows retournent du CODE XML plutôt que des objets. Le xml n’est pas dans un format lisible par l’homme. Vous pouvez utiliser les méthodes de l’API MSXML et du fichier XSL préinstallé pour transformer les données dans un format lisible par l’utilisateur.

Pour plus d’informations sur la sortie XML WinRM et des exemples de xml brut et mis en forme, consultez Scripting in Windows Remote Management.

L’outil en ligne de commande Winrm est fourni avec un fichier de transformation nommé WsmTxt.xsl qui affiche la sortie sous forme tabulaire. Si votre script fournit ce fichier aux méthodes MSXML qui effectuent des transformes, 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 des objets MSXML qui représentent la sortie de la réponse XML et la transformation XSL.

    Set xmlFile = CreateObject( "MSXml.DOMDocument" )
    Set xslFile = CreateObject( "MSXml.DOMDocument" )
    
  3. Obtenez des données à l’aide des méthodes d’objet 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 loadXML MSXML et à la méthode load pour stocker le fichier de transformation.

    xmlFile.LoadXml(xmlResponse)
    xslFile.Load("WsmTxt.xsl")
    
    
  5. Utilisez la méthode transformNode MSXML 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 le code XML dans vos scripts

Vous pouvez ajouter une sous-routine à vos scripts qui utilise le fichier XSL préinstallé pour convertir la sortie XML brute d’un script WinRM en forme 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 illustré 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 la gestion à distance Windows

Utilisation de la gestion à distance Windows

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