SWbemObject를 사용하여 스크립팅
SWbemObject 스크립팅 개체는 SWbemObject 개체가 바인딩된 특정 WMI 개체에 관계없이 사용할 수 있는 속성과 메서드를 정의하는 제네릭 WMI 개체입니다. Win32_Process의 인스턴스 또는 그 외 모든 WMI 데이터 클래스 등 모든 WMI 개체는 SWbemObject로 표시되며 고유한 특정 속성 및 메서드 외에도 SWbemObject 공통 속성과 메서드를 사용할 수 있습니다.
예를 들어 다음 스크립트를 사용하여 SWbemObject.Instances_ 메서드를 호출하여 Win32_Process의 모든 인스턴스를 가져옵니다. clsobjProcess는 Win32_Process 클래스 정의와 SWbemObject를 모두 나타냅니다.
strComputer = "."
Set objWMIServices = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set clsobjProcess = objWMIServices.Get("Win32_Process")
Set colProcesses = clsobjProcess.Instances_()
For Each Process in colProcesses
WScript.Echo Process.Name
Next
다음 예제에서는 Alerter 서비스를 나타내며 이 서비스를 objAlerter에 저장하는 Win32_Service의 특정 인스턴스를 가져옵니다. 그런 다음 WScript.Echo objAlerter.Path_ 같은 SWbemObject 메서드 또는 WScript.Echo objAlerter.State와 같은 데이터 클래스에서 정의한 메서드를 호출할 수 있습니다. objAlerter - Win32_Service의 인스턴스와 SWbemObject를 모두 나타냅니다.
strComputer = "."
Set objWMIServices = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set objAlerter = objWMIServices.Get("Win32_Service.Name='Alerter'")
WScript.Echo objAlerter.Path_
objAlerter.StopService()
WScript.Echo objAlerter.State
For each Prop in myObject.Properties_
Wscript.Echo Prop.Name
Next
SWbemObject.Instances_ 호출은 또 다른 제네릭 WMI 스크립팅 개체인 SWbemObjectSet을 가져옵니다. 표시된 것처럼 SWbemObjectSet 개체는 컬렉션으로 처리할 수 있습니다.
Set clsobjProcess = objWMIServices.Get("Win32_Process")
SWbemObject 메서드는 모두 밑줄(_)로 끝나기 때문에 식별할 수 있습니다(예: SWbemObject.Instances_).
SWbemObjectEx는 SWbemObject의 속성을 확장합니다. 예를 들어 이제 SWbemObjectEx.Refresh_를 호출하여 Win32_Process 인스턴스 등 모든 WMI 개체의 데이터를 업데이트할 수 있습니다.
다음 예제에서는 시스템 프로세스 페이지 오류 데이터를 5초마다 새로 고칠 수 있는 방법을 보여줍니다.
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colProcesses = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'System'",,48)
For Each Process in colProcesses
i = 0
Do Until i = 5
i = i + 1
Wscript.Echo "PageFaults = " & Process.PageFaults
Wscript.Sleep 10000
Process.Refresh_
Loop
Next
SWbemRefresher 개체를 사용하여 데이터를 새로 고치는 방법에 관한 자세한 내용은 스크립트에서 WMI 데이터 새로 고침을 참조하세요.
SWbemObject.Put_ 및 PutAsync_를 사용하면 변경 내용을 WMI 개체에 다시 쓸 수 있습니다. 이러한 메서드는 개체가 생성된 네임스페이스에서 그 개체에 대한 변경 내용만 커밋합니다. SWbemServicesEx.Put 또는 SWbemServicesEx.PutAsync를 사용하여 개체를 다른 네임스페이스에 쓸 수 있습니다.
관련 항목