Skriptování pomocí objektu SWbemObject
SWbemObject skriptovací objekt je obecný objekt WMI definující vlastnosti a metody, které lze použít bez ohledu na konkrétní objekt WMI, ke kterému je objekt SWbemObject vázán. Všechny objekty rozhraní WMI, například instance Win32_Process nebo jakékoli jiné datové třídy rozhraní WMI, jsou reprezentovány SWbemObject a mohou používat SWbemObject společné vlastnosti a metody kromě vlastních konkrétních vlastností a metod.
Například pomocí následujícího skriptu získejte všechny instance Win32_Process voláním SWbemObject.Instances_ metody. ClsobjProcess představuje jak definici třídy Win32_Process, tak 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
Následující příklad získá konkrétní instanci Win32_Service, která představuje službu Alerter a uloží ji v objAlerter. Potom můžete volat metody SWbemObject, například WScript.Echo objAlerter.Path_, nebo metody definované datovou třídou, například WScript.Echo objAlerter.State. objAlerter, který představuje instanci Win32_Service 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
Volání SWbemObject.Instances_ získá další obecný skriptovací objekt rozhraní WMI, SWbemObjectSet. Jak je znázorněno, objekt SWbemObjectSet lze považovat za kolekci.
Set clsobjProcess = objWMIServices.Get("Win32_Process")
Můžete identifikovat SWbemObject metody, protože všechny končí podtržítkem (_), například SWbemObject.Instances_.
SWbemObjectEx rozšiřuje vlastnosti SWbemObject. Nyní můžete například aktualizovat data libovolného objektu WMI, například instance Win32_Process, voláním SWbemObjectEx.Refresh_.
Následující příklad ukazuje, jak je možné aktualizovat data chyb stránky systémového procesu každých pět 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
Další informace o aktualizaci dat pomocí objektu SWbemRefresher naleznete v tématu Aktualizace dat rozhraní WMI ve skriptech.
SWbemObject.Put_ a PutAsync_ umožňují zapisovat změny zpět do libovolného objektu WMI. Tyto metody potvrdí změny pouze objektu v oboru názvů, ve kterém byl objekt vytvořen. Objekt můžete napsat do jiného oboru názvů pomocí SWbemServicesEx.Put nebo SWbemServicesEx.PutAsync.
Související témata
-
rozhraní API pro skriptování pro rozhraní WMI
-
Aktualizace celé instance