다음을 통해 공유


클래스 및 인스턴스 정보 조작

WMI는 Microsoft PowerShell, Visual Basic Scripting Edition(VBScript) 및 C++를 사용하여 WMI 클래스 및 인스턴스 정보를 검색 및 다루는 다양한 기술을 제공합니다.

다음 표에서는 WMI 클래스 및 인스턴스 정보를 검색하고 조작하는 기술에 대해 설명하는 항목을 나열합니다.

항목 설명
WMI 클래스 또는 인스턴스 데이터 검색 WMI 정보 리포지토리에서 데이터를 검색하고 설정합니다.
인스턴스 속성 수정 검색 후 인스턴스의 정보를 변경합니다.
인스턴스 상속 변경 인스턴스의 상위 클래스를 변경합니다.
메서드 수정 인스턴스의 매개 변수를 수정합니다.
WMI 열거 WMI 개체를 열거합니다.
WMI 쿼리 WMI 개체를 쿼리합니다.
메서드 호출 Microsoft 또는 다른 타사 개발자가 만든 연결된 메서드를 사용하여 WMI 개체를 추가로 조작하거나 WMI 개체가 나타내는 개체에 직접 영향을 줍니다.
컬렉션에 액세스 스크립트에서 컬렉션을 열거합니다.

 

VBScript를 사용하여 데이터 조작

직접 액세스를 사용하여 해당 개체의 속성 컬렉션을 통해서가 아니라 SWbemObject에서 직접 WMI 클래스 또는 인스턴스의 WMI 속성에 액세스할 수 있습니다. SWbemServices.ExecMethod 호출을 사용하는 대신 프로그래밍 언어의 네이티브 스타일로 해당 개체에 대한 메서드를 실행할 수도 있습니다. 예를 들어 Win32_ProcessCreate 메서드에는 Windows 2000에 세 개의 매개 변수가 있지만 Windows Server 2003에는 4개의 매개 변수가 있습니다.

직접 액세스를 사용하여 WMI 속성과 메서드를 SWbemObject의 자동화 속성 및 메서드인 것처럼 처리할 수 있습니다.

다음 예제에서는 속성 값에 액세스하는 방법을 보여 줍니다.

VolumeName = MyDisk.Properties_("VolumeName")

다음 예제에서는 직접 액세스할 수 있는 경우 속성에 액세스할 수 있는 방법을 보여줍니다.

VolumeName = MyDisk.VolumeName

개체의 연결도 허용됩니다.

다음 예제에서는 다른 개체에 포함된 개체의 속성에 액세스 하는 방법을 보여줍니다.

value = MyComputer.MyDisk.VolumeName

다음 예제에서는 배열 아래 첨자 표기법을 사용하여 속성에 액세스하는 방법을 보여줍니다.

valueOfElement = MyDisk.MyArrayProperty(3)

다음 VBScript 코드 예제에서는 입력 매개 변수의 인스턴스를 Win32_Process 클래스의 Create 메서드에 SWbemObject로 생성하고 입력 속성을 채운 다음 SWbemServices.ExecMethod를 사용하여 Create 메서드를 실행하는 방법을 보여줍니다.

SWbemObject.Methods_ 속성은 Win32_Process 메서드의 SWbemMethodSet 컬렉션을 반환합니다. 메서드 집합의 멤버는 SWbemMethod 개체이고 SWbemMethod.InParametersCreate 메서드에 대한 입력 매개 변수를 반환합니다. 필요한 CommandLine 입력 매개 변수는 "calc.exe"로 설정됩니다. 그런 다음 메서드가 SWbemServices.ExecMethod로 실행되어 calc.exe 프로세스가 시작됩니다.

set Services = GetObject("winmgmts:root\cimv2")
Set obj = Services.Get("Win32_Process")
Set objIns = obj.Methods_("Create").InParameters.SpawnInstance_
objIns.CommandLine = "calc.exe"
Set objOut = Services.ExecMethod("Win32_Process", "Create", objIns)
MsgBox "Return value = " & objOut.returnvalue & VBCRLF & "Process ID = " & objOut.processid

다음 코드 예제에서는 직접 액세스를 사용하여 이전 작업을 수행하는 방법을 보여줍니다.

set Services = GetObject("winmgmts:root\cimv2")
Set Obj = Services.Get("Win32_Process")
returnvalue = Obj.create("calc.exe",,,processid)
MsgBox "Return value = " & returnvalue & VBCRLF & "Process ID = " & processid

자세한 내용은 공급자 메서드 호출SWbemObject를 사용하여 스크립팅을 참조하세요.