다음을 통해 공유


리소스의 모든 인스턴스 열거 또는 나열

Session.Enumerate 메서드는 지정된 리소스의 모든 인스턴스를 가져오는 Windows 원격 관리 방법입니다.

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

    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 원격 관리 참조