共用方式為


列舉或列出資源的所有實例

Session.Enumerate 方法是取得指定資源的所有實例的 Windows 遠端管理方法。

Session.Enumerate 方法不會取得 SWbemObjectSet 物件中的集合,例如 SWbemService.ExecQuery 呼叫,WMI 查詢 做為參數(例如,ExecQuery("SELECT * from Win32_LogicalDisk")),或呼叫 SWbemObject.Instances_等方法。 Session.Enumerate枚舉 物件的方法與用於將檔案作為數據流來讀取的腳本的 TextStream 物件運作方式更加類似。

若要將檔案讀取為文字數據流,您必須建立腳本 TextStream 物件,並呼叫 TextStream.Readline 方法來讀取檔案的每一行。 同樣地,您可以呼叫 Session.Enumerate 方法來取得 Enumerator 物件,並呼叫 Enumerator.ReadItem 方法來取得下一個專案。 從文本文件讀取時,您可以呼叫 Enumerator.AtEndOfStream 屬性,以檢查您是否已到達數據項的結尾。

列舉資源

  1. 建立會話。

    Const RemoteComputer = "servername.domain.com"
    Set objWsman = CreateObject( "WSMan.Automation" )
    Set objSession = objWsman.CreateSession( "https://" _
        & RemoteComputer )
    
  2. 建構 URI 以識別資源。

    strResource = "http://schemas.microsoft.com/wbem/wsman/1/" &_
                 "wmi/root/cimv2/Win32_ScheduledJob"
    
  3. 調用 Session.Enumerate 方法。 此呼叫會啟動列舉。 在 WinRM 中,列舉作業不會以與 WMI 相同的方式取得集合。 相反地,Session.Enumerate 方法會建立 WS-Management 協議列舉上下文,並在 Enumerator 對象中進行維護。

    Set EnumJobs = objSession.Enumerate( strResource )
    
  4. 呼叫 Enumerator.ReadItem 方法來取得結果的下一個項目。 在 WS-Management 通訊協定中,這會對應至拉取操作。 使用 Enumerator.AtEndOfStream 方法做為控件,以瞭解何時停止讀取。

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

下列 VBScript 程式代碼範例會顯示完整的腳本。

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

關於 Windows 遠端管理

使用 Windows 遠端管理

Windows 遠端管理參考