Windows 원격 관리 및 WMI
Windows 원격 관리는 Windows Management Instrumentation(WMI 및 MI)에서 노출되는 데이터를 검색하는 데 사용할 수 있습니다. WinRM Scripting API 사용하는 스크립트 또는 애플리케이션을 사용하거나 Winrm 명령줄 도구를 통해 WMI 데이터를 가져올 수 있습니다.
WinRM은 포함된 개체를 포함하여 대부분의 친숙한 WMI 클래스 및 작업을 지원합니다. WinRM은 WMI를 활용하여리소스에 대한 데이터를 수집하거나 Windows 기반 운영 체제에서 리소스를 관리할 수 있습니다. 즉, 기존 WMI 클래스 집합을 통해 엔터프라이즈의 디스크, 네트워크 어댑터, 서비스 또는 프로세스와 같은 개체에 대한 데이터를 가져올 수. 표준 WMI IPMI 공급자사용할 수 있는 하드웨어 데이터에 액세스할 수도 있습니다.
WMI 리소스 식별
WMI 클래스를 WinRM 및 WS-Management 프로토콜의 리소스 참조할 수 있습니다. 서비스 또는 디스크와 같은 관리되는 엔터티 유형입니다.
WMI 클래스 또는 메서드는 다른 리소스가 WS-Management 프로토콜을 사용할 때와 마찬가지로 URI의해 식별됩니다. URI는 WMI 리소스(클래스), WMI 작업(메서드) 또는 네트워크를 통해 전송된메시지에서 클래스의 특정 인스턴스를 식별할 수 있습니다. 자세한 내용은 리소스 URI참조하세요.
WMI 클래스에 대한 URI 접두사 생성
URI 접두사에는 고정된 부분과 WMI 네임스페이스가 포함됩니다. 예를 들어 접두사에서 고정된 부분을 포함하는 Windows Server의 URI 접두사는 http://schemas.microsoft.com/wbem/wsman/1/wmi/<WmiNamespace>
. 이렇게 하면 모든 WMI 네임스페이스에 대해 URI 접두사를 생성할 수 있습니다. 예를 들어 root\default WMI 네임스페이스에 액세스하려면 다음 URI 접두사를 사용합니다. http://schemas.microsoft.com/wbem/wsman/1/wmi/root/default/
.
관리를 위한 WMI 클래스의 대부분은 root\cimv2 네임스페이스에 있습니다.
root\cimv2 네임스페이스의 클래스 및 인스턴스에 액세스하려면 URI 접두사 http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/
. 자세한 내용은 리소스 URI참조하세요.
WMI 클래스에 대한 전체 URI 생성
Winrm 명령줄 도구 또는 스크립트에 제공하는 URI는 접두사 및 리소스 사양으로 구성됩니다.
다음 절차에서는 WMI 클래스를 얻거나 열거형 작업에서 사용하기 위해 리소스 URI를 생성하는 방법을 설명합니다.
WMI 클래스 대한 리소스 URI를 생성하려면
WS-Management 프로토콜 스키마를 사용해야 임을 나타내는 접두사로 시작합니다.
https://schemas.microsoft.com/wbem/wsman/1
접두사에 WMI 네임스페이스를 추가합니다.
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/
클래스 이름을 추가합니다.
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service
속성 값을 설정하거나 특정 메서드를 호출하려면 클래스에 필요한 키 값 또는 값을 추가합니다.
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Winmgmt
키 값을 비워 두면 원래 속성 값이 변경되지 않습니다.
메모
키 값을 비워 두면 속성 값이 NULL .
WinRM을 사용하여 WMI 리소스 찾기
명령줄 도구, Winrm또는 WinRM 스크립팅 API사용하는 Visual Basic 스크립트를 통해 WMI 데이터를 가져올 수 있습니다. WMI 경로 사용하여 리소스를 찾지 않습니다. 대신 WMI 네임스페이스 및 계층을 URI변환합니다.
WMI 클래스의 WinRM URI에는 URI 접두사 액세스하려는 클래스의 두 부분이 포함되어 있습니다.
예를 들어 다음 URI는 Session.Enumerate 메서드에 제공되어 컴퓨터의 모든 서비스를 나열할 수 있습니다. URI 접두사는 http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/
클래스가 Win32_Service.
strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"
WMI에서 리소스 또는 클래스의 모든 인스턴스에 대한 데이터를 다음과 같은 여러 가지 방법으로 나열합니다.
해당 리소스의 모든 인스턴스에 대한 쿼리입니다.
Set colServices = objWMIService.ExecQuery("Select * from Win32_Service")
SWbemServices.InstancesOf또는 SWbemObject.Instances_호출입니다.
Set colServices = InstancesOf("Win32_Service")
WinRM에서는 리소스의 모든 인스턴스를 나열하는 한 가지 방법이 있습니다. Session.Enumerate.
strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service"
Set colServices = objSession.Enumerate( strResource )
WMI 리소스의 특정 인스턴스 찾기
WMI에서는 키 속성의 값을 지정하거나 속성 값 목록과 일치하는 인스턴스를 쿼리하여 클래스의 특정 인스턴스를 지정할 수 있습니다. 키 속성에는 WMI 키 한정자있습니다.
다음과 같은 여러 가지 방법으로 클래스의 특정 인스턴스를 가져올 수 있습니다.
필터Session.Enumerate 호출하고 매개 변수를 언어를 사용하여 쿼리를 만듭니다.
RemoteComputer = "servername.domain.com" strDialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL" strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*" Set objWsman = CreateObject("Wsman.Automation") Set objSession = objWsman.CreateSession("https://" & RemoteComputer) strFilter = "SELECT * FROM Win32_Share WHERE Name='Admin$'" Set objResultSet = objSession.Enumerate(strResource, strFilter, strDialect)
SWbemServices.Get호출입니다. Session.Get경우 물음표(?) 앞에 하나 이상의 특정 키 값을 제공해야 합니다.
특정 인스턴스의 URI 형식은
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/WMI_Class?Key1=Value
.strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=winmgmt"
WMI 클래스에는 둘 이상의 키가 있을 수 있습니다. 키 이름-값 쌍은 "+" 기호로 구분됩니다. 이 경우 형식은
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Key1=Value1+Key2=Value2
.단일 WMI 개체를 가져오는 WinRM 구문은 WMI와 다릅니다. 싱글톤은 하나의 인스턴스만 허용되도록 정의된 WMI 클래스입니다. Win32_CurrentTime 또는 Win32_WMISetting WMI 싱글톤 클래스의 예입니다.
싱글톤에 대한 WMI 구문은 다음 VBScript 코드 예제에 나와 있습니다.
Set TimeObject = objWMIService.Get("Win32_CurrentTime=@")
다음 예제에서는 "@"를 사용하지 않는 WinRM 싱글톤 구문을 보여줍니다.
strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"
ResourceLocator 또는 IWSManResourceLocator 개체에 선택기 추가합니다.
다음 VBScript 코드 예제에서는 선택기를 사용하여 특정 Win32_Processor인스턴스를 가져오는 방법을 보여 줍니다.
strUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Processor" Set objWsman = CreateObject("Wsman.Automation") Set Session = objWsman.CreateSession Set Locator = objWsman.CreateResourceLocator(strUri) Locator.AddSelector "DeviceID", "CPU0"