리소스의 모든 인스턴스 열거 또는 나열
Session.Enumerate 메서드는 지정된 리소스의 모든 인스턴스를 가져오는 Windows 원격 관리 방법입니다.
Session.Enumerate 메서드는 SWbemService.ExecQuery 호출과 같은 SWbemObjectSet 개체의 컬렉션을 매개 변수(예ExecQuery("SELECT * from Win32_LogicalDisk")
: )로 가져오거나 SWbemObject.Instances_ 같은 메서드에 대한 호출을 가져오지 않습니다.
Session.Enumerate 및 Enumerator 개체 메서드는 파일을 스트림으로 읽는 데 사용되는 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 메서드는 Enumerator 개체에 유지 관리되는 WS-Management 프로토콜 열거형 컨텍스트를 설정합니다.
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
관련 항목