다음을 통해 공유


Windows 원격 관리 및 WMI

Windows 원격 관리는 WMIMI(Windows Management Instrumentation)에서 노출되는 데이터를 검색하는 데 사용할 수 있습니다. WinRM 스크립팅 API를 사용하는 스크립트 또는 애플리케이션 또는 Winrm 명령줄 도구를 통해 WMI 데이터를 가져올 수 있습니다.

WinRM은 포함된 개체를 포함하여 대부분의 친숙한 WMI 클래스 및 작업을 지원합니다. WinRM은 WMI를 활용하여 리소스 에 대한 데이터를 수집하거나 Windows 기반 운영 체제에서 리소스를 관리할 수 있습니다. 즉, 기존 WMI 클래스 집합을 통해 엔터프라이즈의 디스크, 네트워크 어댑터, 서비스 또는 프로세스와 같은 개체에 대한 데이터를 가져올 수 있습니다. 표준 WMI IPMI 공급자에서 사용할 수 있는 하드웨어 데이터에 액세스할 수도 있습니다.

WMI 리소스 식별

WMI 클래스를 WinRM 및 WS-Management 프로토콜의 리소스 로 참조할 수 있습니다. 서비스 또는 디스크와 같은 관리되는 엔터티 유형입니다.

WMI 클래스 또는 메서드는 WS-Management 프로토콜을 사용할 때 다른 리소스와 마찬가지로 URI로 식별됩니다. URI는 WMI 리소스(클래스), WMI 작업(메서드) 또는 네트워크를 통해 전송된 메시지에서 클래스의 특정 instance 식별할 수 있습니다. 자세한 내용은 리소스 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를 생성하려면

  1. WS-Management 프로토콜 스키마를 사용해야 했음을 나타내는 접두사로 시작합니다.

    https://schemas.microsoft.com/wbem/wsman/1

    WMI 클래스에 대한 리소스 URI 접두사는 항상 동일합니다. 자세한 내용은 URI 접두사를 참조하세요.

  2. 접두사에 WMI 네임스페이스를 추가합니다.

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/

  3. 클래스 이름을 추가합니다.

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service

  4. 속성 값을 설정하거나 특정 메서드를 호출하려면 클래스에 필요한 키 값 또는 값을 추가합니다.

    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에서 키 속성의 값을 지정하거나 속성 값 목록과 일치하는 instance 쿼리하여 클래스의 특정 instance 지정할 수 있습니다. 키 속성에는 WMI 키 한정자 가 있습니다.

다음과 같은 여러 가지 방법으로 클래스의 특정 instance 가져올 수 있습니다.

  • 필터언어 매개 변수를 사용하여 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의 경우 물음표(?) 앞에 하나 이상의 특정 키 값을 제공해야 합니다.

    특정 instance 대한 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와 다릅니다. 싱글톤은 instance 하나만 허용되도록 정의된 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 코드 예제에서는 선택기를 사용하여 특정 instance 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"
    

Windows 원격 관리 정보

URI 접두사

리소스 URI

Windows 원격 관리의 스크립팅