클래스 및 인스턴스 정보 조작
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_Process의 Create 메서드에는 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.InParameters 는 Create 메서드에 대한 입력 매개 변수를 반환합니다. 필요한 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를 사용하여 스크립팅을 참조하세요.