다음을 통해 공유


리소스의 특정 인스턴스 쿼리

Session.Enumerate 호출에는 열거형을 쿼리로 좁히는 선택적 매개 변수가 있습니다. WinRM 스크립팅 APIWinRM C++ API는 기본 WS-Management 프로토콜에서 밀접하게 모델링되므로 매개 변수는 프로토콜로 쿼리하는 데 동일한 용어(필터필터 언어)를 사용합니다.

Session.Enumerate의 필터 및 언어 매개 변수를 사용하거나 ResourceLocator 개체와 AddSelector 메서드를 생성하고 제공할 수 있지만 둘 다 수행할 수는 없습니다.

이 절차는 TCP/IP가 바인딩되고 사용하도록 설정된 네트워크 어댑터에 대한 쿼리를 실행합니다. 쿼리는 IpEnabled 속성이 True로 설정된 Win32_NetworkAdapterConfiguration 모든 인스턴스를 요청합니다. 필터방언을 추가하는 경우를 제외하고 쿼리는 간단한 열거형처럼 처리됩니다.

이 예제에서는 클래스 이름인 Win32_NetworkAdapterConfiguration이미 strFilter 문자열에 언급되어 있으므로 Resource 상수의 리소스 이름은 별표 "*"로 표시됩니다.

리소스의 특정 인스턴스를 쿼리하려면

  1. 읽기 용이성을 위해 URI를 상수로 정의합니다.

    Const RemoteComputer = "servername.domain.com"
    Const Resource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
    Const Dialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"
    
  2. 세션을 만듭니다.

    Set objWsman = CreateObject("Wsman.Automation")
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
    
  3. 필터 문자열을 생성합니다. Windows 원격 관리는 WQL 을 필터 언어로 지원합니다.

    strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"
    
  4. flags 매개 변수에 필요한 열거형 상수를 설정합니다.

    플래그에 열거형 상수WSManFlagHierarchyDeepBasePropsOnly 또는 WSManFlagHierarchyShallow 가 포함된 경우 WinRM 서비스는 ERROR_WSMAN_POLYMORPHISM_MODE_UNSUPPORTED 오류 코드를 반환합니다.

  5. Session.Enumerate 메서드를 호출합니다. 이 호출은 열거형을 시작합니다. Session.Enumerate 메서드는 Enumerator 개체에 유지 관리되는 WS-Management 프로토콜 열거형 컨텍스트를 설정합니다.

    Set objResultSet = objSession.Enumerate(Resource, strFilter, Dialect)
    
  6. Enumerator.ReadItem 메서드를 호출하여 결과의 다음 항목을 가져옵니다. WS-Management 프로토콜에서 끌어오기 작업에 해당합니다. Enumerator.AtEndOfStream 메서드를 컨트롤로 사용하여 읽기를 중지해야 하는 시기를 알 수 있습니다.

    While Not objResultSet.AtEndOfStream
        DisplayOutput(objResultSet.ReadItem)
    Wend
    

다음 VBScript 코드 예제에서는 전체 스크립트를 보여줍니다.

Const RemoteComputer = "servername.domain.com"
Const Resource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
Const Dialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"

Set objWsman = CreateObject("Wsman.Automation")
Set objSession = objWsman.CreateSession("https://" & RemoteComputer)

strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"

Set objResultSet = objSession.Enumerate(Resource, strFilter, Dialect)

While Not objResultSet.AtEndOfStream
    DisplayOutput(objResultSet.ReadItem)
Wend

'****************************************************
' 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 원격 관리 사용

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

ResourceLocator