SWbemObject를 사용하여 스크립팅
SWbemObject 스크립팅 개체는 제네릭 WMI 개체로, SWbemObject 개체가 바인딩된 특정 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 서비스를 나타내는 특정 Win32_Service 인스턴스를 가져와서 objAlerter에 저장합니다. 그런 다음 SWbemObject 메서드(예: WScript.Echo objAlerter.Path_) 또는 데이터 클래스에서 정의한 메서드(예: WScript.Echo objAlerter.State)를 호출할 수 있습니다. Win32_Service 인스턴스와 SWbemObject모두 나타내는 objAlerter입니다.
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_ 호출은 SWbemObjectSet하나의 제네릭 WMI 스크립팅 개체를 가져옵니다. 표시된 것처럼 SWbemObjectSet 개체는 컬렉션처리할 수 있습니다.
Set clsobjProcess = objWMIServices.Get("Win32_Process")
SWbemObject 메서드는 모두 밑줄(_)로 끝나므로 식별할 수 있습니다(예: SWbemObject.Instances_.).
SWbemObjectExSWbemObject속성을 확장합니다. 예를 들어 이제 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사용하여 개체를 다른 네임스페이스에 쓸 수 있습니다.
관련 항목