다음을 통해 공유


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사용하여 개체를 다른 네임스페이스에 쓸 수 있습니다.

WMI에 대한 스크립팅 API

WMI 스크립트 만들기

전체 인스턴스 업데이트

메서드 호출