Interrogation d’instances spécifiques d’une ressource
L’appel à Session.Enumerate a des paramètres facultatifs qui réduisent l’énumération en une requête. Étant donné que l’API WinRM Scripting et l’API WinRM C++ 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 : filtrer et filtrer le dialecte.
Vous pouvez utiliser les paramètres de filtre et de dialecte de Session.Enumerate ou vous pouvez construire et fournir un objet ResourceLocator et la méthode AddSelector , mais vous ne pouvez pas effectuer les deux.
Cette procédure exécute une requête pour les cartes réseau qui ont tcp/IP lié et activé. La requête demande toutes les instances de Win32_NetworkAdapterConfiguration 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 simple énumération.
Dans cet exemple, le nom de ressource de la constante Resource 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 rechercher des instances spécifiques d’une ressource
Pour faciliter la lecture, définissez des 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)
Construisez la chaîne de filtre. Windows Remote Management 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 .
N’oubliez pas que si les indicateurs incluent les constantes d’énumérationWSManFlagHierarchyDeepBasePropsOnly ou WSManFlagHierarchyShallow , le service WinRM retourne le code d’erreur ERROR_WSMAN_POLYMORPHISM_MODE_UNSUPPORTED.
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 Enumerator .
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
Rubriques connexes
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour