Interrogation d’instances spécifiques d’une ressource
L’appel à session. Enumerate possède des paramètres facultatifs qui réduisent l’énumération dans une requête. Étant donné que l' API de script WinRM et l' API C++ WinRM sont étroitement modélisées sur le protocole de WS-Management sous-jacent, les paramètres utilisent la même terminologie pour l’interrogation que le protocole : le langage de filtre et de filtre.
Vous pouvez utiliser les paramètres de filtre et de dialecte de session. Enumerate , ou vous pouvez créer et fournir un objet ResourceLocator et la méthode AddSelector , mais vous ne pouvez pas les deux.
Cette procédure exécute une requête pour les cartes réseau pour lesquelles TCP/IP est lié et activé. La requête demande toutes les instances de _ NetworkAdapterConfiguration Win32 dont la propriété IpEnabled a la valeur true. À l’exception de l’ajout du filtre et du dialecte, la requête est gérée comme une énumération simple.
Dans cet exemple, le nom de ressource de la constante de ressource est représenté par un astérisque « * », car le nom de la classe, Win32 _ NetworkAdapterConfiguration, est déjà mentionné dans la chaîne strFilter .
Pour interroger des instances spécifiques d’une ressource
Pour faciliter la lecture, définissez les URI en tant que constantes.
Const RemoteComputer = "servername.domain.com" Const Resource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*" Const Dialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"Créer une session.
Set objWsman = CreateObject("Wsman.Automation") Set objSession = objWsman.CreateSession("https://" & RemoteComputer)Construire la chaîne de filtrage. Windows La gestion à distance prend en charge WQL comme dialecte de filtre.
strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"Définissez toutes les constantes d’énumération requises dans le paramètre Flags .
Sachez que si les indicateurs incluent les constantes d’énumération WSManFlagHierarchyDeepBasePropsOnly ou WSManFlagHierarchyShallow , le service WinRM retourne le code d’erreur le mode de _ _ polymorphisme WSMan n’est _ _ pas pris en charge.
Appelez la méthode session. Enumerate . Cet appel démarre une énumération. La méthode session. Enumerate établit un contexte d’énumération de protocole WS-Management, conservé dans l’objet énumérateur .
Set objResultSet = objSession.Enumerate(Resource, strFilter, Dialect)Appelez la méthode Enumerator. ReadItem pour obtenir l’élément suivant des résultats. Dans WS-Management protocole, cela correspond à l’opération d’extraction. Utilisez la méthode Enumerator. AtEndOfStream comme contrôle pour savoir quand arrêter la lecture.
While Not objResultSet.AtEndOfStream DisplayOutput(objResultSet.ReadItem) Wend
L’exemple de code VBScript suivant montre le script complet.
Const RemoteComputer = "servername.domain.com"
Const Resource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
Const Dialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"
Set objWsman = CreateObject("Wsman.Automation")
Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"
Set objResultSet = objSession.Enumerate(Resource, strFilter, Dialect)
While Not objResultSet.AtEndOfStream
DisplayOutput(objResultSet.ReadItem)
Wend
'****************************************************
' Displays WinRM XML message using built-in XSL
'****************************************************
Sub DisplayOutput(strWinRMXml)
Dim xmlFile, xslFile
Set xmlFile = CreateObject("MSXml2.DOMDocument.3.0")
Set xslFile = CreateObject("MSXml2.DOMDocument.3.0")
xmlFile.LoadXml(strWinRMXml)
xslFile.Load("WsmTxt.xsl")
Wscript.Echo xmlFile.TransformNode(xslFile)
End Sub