다음을 통해 공유


VBScript를 사용하여 WMI에 연결

WMI 스크립트는 C++ 프로그램에 필요한 많은 단계를 압축할 수 있습니다. 그들은 SWbemLocator 개체뿐만 아니라 모니커 "winmgmts:"를 통해서도 WMI에 연결할 수 있습니다. 모니커는 WMI에서 네임스페이스, 클래스 또는 인스턴스를 찾는 짧은 이름입니다. "winmgmts:"라는 이름은 WMI 개체를 사용하도록 Windows 스크립트 호스트에 지시하고, 기본 네임스페이스에 연결하고, SWbemServices 개체를 가져오는 WMI 모니커입니다. 다른 연결 정보, 예를 들어 대리 수준이나 특정 클래스 또는 인스턴스는 모니커 이름 다음의 문자열에 나타납니다. WMI 개체를 만들거나 가져오는 호출에서 모니커를 사용할 수 있습니다. 자세한 내용은 모니커 문자열생성을 참조하세요.

다음 절차에서는 SWbemLocator사용하여 WMI에 연결하는 방법을 설명합니다.

SWbemLocator 사용하여 WMI에 연결하려면

  1. CreateObject 호출하여 로케이터 개체를 검색합니다.

    Set Locator = CreateObject("WbemScripting.SWbemLocator")
    
  2. ConnectServer 메서드에 대한 호출을 사용하여 네임스페이스에 로그온합니다.

    Set objLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objService = objLocator.ConnectServer(".", "root\cimv2")
    

    ConnectServer호출에서 컴퓨터를 지정하지 않으면 WMI가 로컬 컴퓨터에 연결됩니다. 네임스페이스를 지정하지 않으면 WMI가 레지스트리 키에 지정된 네임스페이스에 연결됩니다.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting\기본 네임스페이스

    기본 네임스페이스는 \root\cimv2입니다. 네임스페이스에 대한 자세한 내용은 WMI내의 계층 만들기를 참조하세요.

  3. SWbemServices.Security_ 메서드를 호출하여 가상화 수준을 설정합니다.

    objService.Security_.ImpersonationLevel = 3 
    

    자세한 내용은 VBScript사용하여 기본 프로세스 보안 수준 설정을 참조하세요.

  4. 스크립트의 용도를 구현합니다.

    WMI는 네트워크를 통해 데이터에 액세스하고 조작하는 데 사용하는 다양한 스크립팅 개체를 노출합니다. 자세한 내용은 클래스 및 인스턴스 정보 조작과 WMI 스크립팅 API 을 참조하세요.

    Set objLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objService = objLocator.ConnectServer(".", "root\cimv2")
    objService.Security_.ImpersonationLevel = 3
    Set Jobs = objService.ExecQuery("SELECT * FROM Win32_ScheduledJob")
    i=0
    For each Job in Jobs
        i = i+1   
        WScript.Echo Job.JobId & "  " & Job.Command & VBNewLine
    Next
    If i = 0 Then
        WScript.Echo "No Jobs Scheduled with the AT command were found"
    End If
    

다음 절차에서는 모니커를 사용하여 WMI에 연결하고 개체를 검색하는 방법을 설명합니다.

모니커 사용하여 WMI에 연결하고 개체를 검색하려면

  1. 입력 매개 변수에서 모니커를 사용하여 GetObject 호출합니다.

    'the simple version
    Set MyObject = GetObject("winMgmts::Win32_scheduledJob")
    
    'Or the more complex version
    strComputer = "."
    Set MyObject = GetObject("winMgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\Root\CIMv2:Win32_ScheduledJob")
    

    moiniker에는 WMI에 연결하는 데 사용할 수 있는 여러 요소가 포함되어 있습니다.

    • "winmgmts:"는 WSH에 Scripting API 개체를 사용하도록 지시합니다. 이 특정 예제에서 WSH는 시스템의 첫 번째 Win32_scheduledJob 설명하는 SWbemObject를 반환해야 한다는 것을 알게 됩니다. 모니커가 설명한 내용에 따라 반환할 수 있는 다른 개체는 SWbemCollection 개체 또는 SWbemServices 개체가 될 수 있습니다.

    • 필요에 따라 연결에 대한 보안 수준을 설정할 수 있습니다. 그러나 모니커에서는 이름 및 암호 정보를 설정할 수 없습니다. 자세한 내용은 스크립팅 클라이언트 보안참조하세요.

    • 필요에 따라 WMI 개체의 경로를 정의할 수 있습니다. 여기에는 로컬 또는 원격 컴퓨터, 네임스페이스 및 클래스 이름이 포함됩니다. WMI 스크립트에서 VBScript GetObject 사용하는 방법에 대한 자세한 내용은 인스턴스 만들기 및 WMI 인스턴스 검색참조하세요.

  2. 단일 항목 또는 컬렉션을 검색하는 대신 이전 예제에 설명된 대로 SWbemServices 개체를 검색하도록 선택할 수도 있습니다. 그런 다음 반환된 개체에 대해 추가 쿼리를 호출할 수 있습니다.

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colScheduledJobs = objWMIService.ExecQuery("Select * from Win32_ScheduledJob")
    For Each objJob in colScheduledJobs
        Wscript.Echo "Job ID: " & objJob.JobId & "Command: " & objJob.Command & VBNewLine
    Next
    

    이전 예제에서 대리 실행, 또는 impersonationLevel=3은 기본 프로세스 보안 수준입니다. 다음 예제에서는 프로세스 보안을 위임하도록 변경하지 않는 한 이 프로세스 보안 수준을 지정할 필요가 없습니다. 자세한 내용은 VBScript사용하여 기본 프로세스 보안 수준 설정을 참조하세요.

WMI 스크립팅