列舉或列出資源的所有實例
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 屬性,以檢查您是否已到達數據項的結尾。
列舉資源
建立會話。
Const RemoteComputer = "servername.domain.com" Set objWsman = CreateObject( "WSMan.Automation" ) Set objSession = objWsman.CreateSession( "https://" _ & RemoteComputer )
建構 URI 以識別資源。
strResource = "http://schemas.microsoft.com/wbem/wsman/1/" &_ "wmi/root/cimv2/Win32_ScheduledJob"
調用 Session.Enumerate 方法。 此呼叫會啟動列舉。 在 WinRM 中,列舉作業不會以與 WMI 相同的方式取得集合。 相反地,Session.Enumerate 方法會建立 WS-Management 協議列舉上下文,並在 Enumerator 對象中進行維護。
Set EnumJobs = objSession.Enumerate( strResource )
呼叫 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
相關主題