Enumerazione o elenco di tutte le istanze di una risorsa

Il metodo Session.Enumerate è l'approccio di Gestione remota di Windows per ottenere tutte le istanze di una risorsa specificata.

Il metodo Session.Enumerate non ottiene una raccolta in un oggetto SWbemObjectSet come una chiamata SWbemService.ExecQuery con una query WMI come parametro (ad esempio, ExecQuery("SELECT * from Win32_LogicalDisk")), o una chiamata a un metodo come SWbemObject.Instances_. Session.Enumerate e i metodi dell'oggetto Enumeratore sono molto più simili all'operazione dell'oggetto TextStream di scripting usato per la lettura di file come flusso.

Per leggere i file come flusso di testo, è necessario creare l'oggetto TextStream di scripting e chiamare il metodo TextStream.Readline per leggere ogni riga del file. In modo analogo, è possibile chiamare il metodo Session.Enumerate per ottenere un oggetto Enumeratore e chiamare il metodo Enumerator.ReadItem per ottenere l'elemento successivo. Come accade quando si legge dal file di testo, è possibile chiamare la proprietà Enumerator.AtEndOfStream per verificare se è stata raggiunta la fine degli elementi di dati.

Per enumerare una risorsa

  1. Crea una sessione.

    Const RemoteComputer = "servername.domain.com"
    Set objWsman = CreateObject( "WSMan.Automation" )
    Set objSession = objWsman.CreateSession( "https://" _
        & RemoteComputer )
    
  2. Costruire l'URI per identificare la risorsa.

    strResource = "http://schemas.microsoft.com/wbem/wsman/1/" &_
                 "wmi/root/cimv2/Win32_ScheduledJob"
    
  3. Chiamare il metodo Session.Enumerate . Questa chiamata avvia un'enumerazione. In WinRM un'operazione di enumerazione non ottiene una raccolta nello stesso modo in cui WMI esegue. Il metodo Session.Enumerate stabilisce invece un contesto di enumerazione del protocollo WS-Management gestito nell'oggetto Enumerator .

    Set EnumJobs = objSession.Enumerate( strResource )
    
  4. Chiamare il metodo Enumerator.ReadItem per ottenere l'elemento successivo dei risultati. Nel protocollo WS-Management corrisponde all'operazione pull. Usare il metodo Enumerator.AtEndOfStream come controllo per sapere quando interrompere la lettura.

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

Nell'esempio di codice VBScript seguente viene illustrato lo script completo.

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

Informazioni sulla gestione remota di Windows

Uso di Gestione remota di Windows

Informazioni di riferimento sulla gestione remota di Windows