Auflisten oder Auflisten aller Instanzen einer Ressource

Die Session.Enumerate-Methode ist der Windows-Remoteverwaltungsansatz zum Abrufen aller Instanzen einer angegebenen Ressource.

Die Session.Enumerate-Methode ruft keine Auflistung in einem SWbemObjectSet-Objekt wie einen SWbemService.ExecQuery-Aufruf mit einer WMI-Abfrage als Parameter (z. B ExecQuery("SELECT * from Win32_LogicalDisk"). ) oder einen Aufruf einer Methode wie SWbemObject.Instances_ ab. Session.Enumerate und die Enumerator-Objektmethoden ähneln dem Vorgang des TextStream-Skriptobjekts, das zum Lesen von Dateien als Stream verwendet wird.

Um Dateien als Textstream zu lesen, müssen Sie das TextStream-Skriptobjekt erstellen und die TextStream.Readline-Methode aufrufen, um jede Zeile der Datei zu lesen. Auf ähnliche Weise können Sie die Session.Enumerate-Methode aufrufen, um ein Enumerator-Objekt zu erhalten, und die Enumerator.ReadItem-Methode aufrufen, um das nächste Element abzurufen. Wie beim Lesen aus der Textdatei können Sie die Enumerator.AtEndOfStream-Eigenschaft aufrufen, um zu überprüfen, ob das Ende der Datenelemente erreicht ist.

So listen Sie eine Ressource auf

  1. Erstellen Sie eine Sitzung.

    Const RemoteComputer = "servername.domain.com"
    Set objWsman = CreateObject( "WSMan.Automation" )
    Set objSession = objWsman.CreateSession( "https://" _
        & RemoteComputer )
    
  2. Erstellen Sie den URI, um die Ressource zu identifizieren.

    strResource = "http://schemas.microsoft.com/wbem/wsman/1/" &_
                 "wmi/root/cimv2/Win32_ScheduledJob"
    
  3. Rufen Sie die Session.Enumerate-Methode auf . Mit diesem Aufruf wird eine Enumeration gestartet. In WinRM ruft ein Enumerationsvorgang keine Auflistung auf die gleiche Weise wie WMI ab. Stattdessen richtet die Session.Enumerate-Methode einen WS-Management Protokollaufzählungskontext ein, der im Enumerator-Objekt verwaltet wird.

    Set EnumJobs = objSession.Enumerate( strResource )
    
  4. Rufen Sie die Enumerator.ReadItem-Methode auf, um das nächste Element der Ergebnisse abzurufen. In WS-Management Protokoll entspricht dies dem Pullvorgang. Verwenden Sie die Enumerator.AtEndOfStream-Methode als Steuerelement, um zu ermitteln, wann das Lesen beendet werden soll.

    While Not EnumJobs.AtEndOfStream
        NumOfJobs = NumOfJobs + 1
        DisplayOutput( EnumJobs.ReadItem ) 
    Wend
    

Das folgende VBScript-Codebeispiel zeigt das vollständige Skript.

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

Informationen zur Windows-Remoteverwaltung

Verwenden der Windows-Remoteverwaltung

Windows-Remoteverwaltungsreferenz