Udostępnij za pośrednictwem


Wykonywanie skryptów za pomocą obiektu SWbemObject

Obiekt skryptowy SWbemObject to ogólny obiekt WMI, definiujący właściwości i metody, których można użyć niezależnie od określonego obiektu WMI, do którego jest powiązany obiekt SWbemObject. Wszystkie obiekty WMI, takie jak wystąpienie Win32_Process lub dowolna inna klasa danych WMI, są reprezentowane przez SWbemObject i mogą używać SWbemObject wspólnych właściwości i metod oprócz własnych właściwości i metod.

Na przykład użyj następującego skryptu, aby uzyskać wszystkie wystąpienia Win32_Process przez wywołanie metody SWbemObject.Instances_. ClsobjProcess reprezentuje zarówno definicję klasy Win32_Process, jak i 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

Poniższy przykład uzyskuje określone wystąpienie Win32_Service, które reprezentuje usługę Alerter i przechowuje je w objAlerter. Następnie można wywołać metody SWbemObject, takie jak WScript.Echo objAlerter.Path_, lub metody zdefiniowane przez klasę danych, takie jak WScript.Echo objAlerter.State. objAlerter reprezentujący zarówno instancję Win32_Service, jak i 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

Wywołanie metody SWbemObject.Instances_ uzyskuje kolejny ogólny obiekt skryptowy WMI, SWbemObjectSet. Jak pokazano, obiekt SWbemObjectSet może być traktowany jako kolekcja .

Set clsobjProcess = objWMIServices.Get("Win32_Process")

Można zidentyfikować metody SWbemObject, ponieważ wszystkie kończą się podkreśleniami (_), na przykład SWbemObject.Instances_.

SWbemObjectEx rozszerza właściwości SWbemObject. Na przykład można teraz zaktualizować dane dowolnego obiektu WMI, takiego jak instancja Win32_Process, poprzez wywołanie SWbemObjectEx.Refresh_.

W poniższym przykładzie pokazano, jak dane błędów strony procesu systemu mogą być odświeżane co pięć sekund.

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

Aby uzyskać więcej informacji na temat odświeżania danych przy użyciu obiektu SWbemRefresher, zobacz Odświeżanie danych usługi WMI w skryptach.

SWbemObject.Put_ i PutAsync_ umożliwiają zapisywanie zmian z powrotem do dowolnego obiektu WMI. Te metody zatwierdzają zmiany tylko w obiekcie w przestrzeni nazw, w której został utworzony obiekt. Obiekt można zapisać w innej przestrzeni nazw przy użyciu SWbemServicesEx.Put lub SWbemServicesEx.PutAsync.

interfejs API skryptów dla usługi WMI

Tworzenie skryptu WMI

Aktualizacja całego wystąpienia

wywoływanie metody