리소스의 특정 인스턴스 쿼리
Session.Enumerate 호출에는 열거형을 쿼리로 좁히는 선택적 매개 변수가 있습니다. WinRM 스크립팅 API 및 WinRM C++ API는 기본 WS-Management 프로토콜에서 밀접하게 모델링되므로 매개 변수는 프로토콜로 쿼리하는 데 동일한 용어인 필터 및 필터 언어를 사용합니다.
Session.Enumerate의 필터 및 언어 매개 변수를 사용하거나 ResourceLocator 개체와 AddSelector 메서드를 생성하고 제공할 수 있지만 둘 다 수행할 수는 없습니다.
이 절차는 TCP/IP가 바인딩되고 사용하도록 설정된 네트워크 어댑터에 대한 쿼리를 실행합니다. 쿼리는 IpEnabled 속성이 True로 설정된 Win32_NetworkAdapterConfiguration 모든 인스턴스를 요청합니다. 필터와 방언의 추가를 제외하고 쿼리는 간단한 열거형처럼 처리됩니다.
이 예제에서는 클래스 이름(Win32_NetworkAdapterConfiguration)이 strFilter 문자열에 이미 언급되어 있으므로 리소스 상수의 리소스 이름은 별표 "*"로 표시됩니다.
리소스의 특정 인스턴스를 쿼리하려면
읽기 용이성을 위해 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"
세션을 만듭니다.
Set objWsman = CreateObject("Wsman.Automation") Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
필터 문자열을 생성합니다. Windows 원격 관리는 WQL을 필터 언어로 지원합니다.
strFilter = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled=TRUE"
flags 매개 변수에 필요한 열거형 상수를 설정합니다.
플래그에 열거형 상수 WSManFlagHierarchyDeepBasePropsOnly 또는 WSManFlagHierarchyShallow가 포함된 경우 WinRM 서비스는 ERROR_WSMAN_POLYMORPHISM_MODE_UNSUPPORTED 오류 코드를 반환합니다.
Session.Enumerate 메서드를 호출합니다. 이 호출은 열거형을 시작합니다. Session.Enumerate 메서드는 열거자 개체에서 유지 관리되는 WS-Management 프로토콜 열거형 컨텍스트를 설정합니다.
Set objResultSet = objSession.Enumerate(Resource, strFilter, Dialect)
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
관련 항목