Partager via


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 code 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 en format lisible par l’homme.

Pour plus d’informations sur la sortie XML WinRM et des exemples de données XML brutes et mises 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 dans un formulaire tabulaire. Si votre script fournit ce fichier aux méthodes MSXML qui effectuent des transformations, la sortie apparaît comme la sortie de l’outil Winrm .

Pour mettre en forme la 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 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 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 de chargement 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 du code XML en 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 formulaire 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 des de gestion à distance Windows

à l’aide du de gestion à distance Windows

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