Énumération ou liste de toutes les instances d’une ressource
La méthode Session.Enumerate est l’approche de gestion à distance Windows permettant d’obtenir toutes les instances d’une ressource spécifiée.
La méthode Session.Enumerate n’obtient pas de collection dans un objet SWbemObjectSet comme un appel SWbemService.ExecQuery avec une requête WMI en tant que paramètre (par exemple, ExecQuery("SELECT * from Win32_LogicalDisk")
) ou un appel à une méthode comme SWbemObject.Instances_.
Session.Enumerate et les méthodes d’objet Enumerator sont beaucoup plus similaires à l’opération de script de l’objet TextStream utilisé pour lire des fichiers en tant que flux.
Pour lire des fichiers sous forme de flux de texte, vous devez créer l’objet TextStream de script et appeler la méthode TextStream.Readline pour lire chaque ligne du fichier. De même, vous pouvez appeler la méthode Session.Enumerate pour obtenir un objet Enumerator et appeler la méthode Enumerator.ReadItem pour obtenir l’élément suivant. Comme c’est le cas lors de la lecture à partir du fichier texte, vous pouvez appeler la propriété Enumerator.AtEndOfStream pour case activée si vous avez atteint la fin des éléments de données.
Pour énumérer une ressource
Créer une session.
Const RemoteComputer = "servername.domain.com" Set objWsman = CreateObject( "WSMan.Automation" ) Set objSession = objWsman.CreateSession( "https://" _ & RemoteComputer )
Construisez l’URI pour identifier la ressource.
strResource = "http://schemas.microsoft.com/wbem/wsman/1/" &_ "wmi/root/cimv2/Win32_ScheduledJob"
Appelez la méthode Session.Enumerate . Cet appel démarre une énumération. Dans WinRM, une opération d’énumération n’obtient pas une collection de la même manière que WMI. Au lieu de cela, la méthode Session.Enumerate établit un contexte d’énumération de protocole WS-Management qui est conservé dans l’objet Énumérateur .
Set EnumJobs = objSession.Enumerate( strResource )
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 EnumJobs.AtEndOfStream NumOfJobs = NumOfJobs + 1 DisplayOutput( EnumJobs.ReadItem ) Wend
L’exemple de code VBScript suivant montre le script complet.
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_ScheduledJob"
Set EnumJobs = objSession.Enumerate( strResource )
NumOfJobs = 0
While Not EnumJobs.AtEndOfStream
NumOfJobs = NumOfJobs + 1
DisplayOutput( EnumJobs.ReadItem )
Wend
Wscript.Echo "There are " & NumOfJobs & " jobs scheduled."
'****************************************************
' 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