Sdílet prostřednictvím


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.

rozhraní API pro skriptování pro rozhraní WMI

vytvoření skriptu rozhraní WMI

Aktualizace celé instance

volání metody