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.
Tematy pokrewne
-
interfejs API skryptów dla usługi WMI
-
wywoływanie metody