Dela via


Skript med SWbemObject

Det SWbemObject- skriptobjektet är det generiska WMI-objektet och definierar egenskaper och metoder som kan användas oavsett det specifika WMI-objekt som SWbemObject- objekt är bundet till. Alla WMI-objekt, till exempel en instans av Win32_Process eller någon annan WMI-dataklass, representeras av SWbemObject- och kan använda SWbemObject vanliga egenskaper och metoder utöver sina egna specifika egenskaper och metoder.

Använd till exempel följande skript för att hämta alla instanser av en Win32_Process genom att anropa metoden SWbemObject.Instances_. clsobjProcess representerar både Win32_Process-klassdefinitionen och en 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

I följande exempel hämtas en specifik instans av Win32_Service som representerar Alerter-tjänsten och lagrar den i objAlerter. Du kan sedan anropa antingen SWbemObject metoder, till exempel WScript.Echo objAlerter.Path_ eller metoder som definierats av dataklassen, till exempel WScript.Echo objAlerter.State. objAlerter som representerar både en instans av Win32_Service och en 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

Anropet till SWbemObject.Instances_ hämtar ett annat allmänt WMI-skriptobjekt, SWbemObjectSet. Som du ser kan SWbemObjectSet-objektet behandlas som en samling.

Set clsobjProcess = objWMIServices.Get("Win32_Process")

Du kan identifiera SWbemObject- metoder eftersom alla slutar med ett understreck (_), till exempel SWbemObject.Instances_.

SWbemObjectEx utökar egenskaperna för SWbemObject. Du kan till exempel nu uppdatera data för alla WMI-objekt, till exempel en instans av Win32_Process, genom ett anrop till SWbemObjectEx.Refresh_.

I följande exempel visas hur feldata för systemprocesssidan kan uppdateras var femte 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

Mer information om hur du uppdaterar data med hjälp av ett SWbemRefresher--objekt finns i Uppdatera WMI-data i Skript.

Med SWbemObject.Put_ och PutAsync_ kan du skriva tillbaka ändringar till valfritt WMI-objekt. Dessa metoder gör endast ändringar i ett objekt i det namnområde där objektet skapades. Du kan skriva objektet till ett annat namnområde med hjälp av SWbemServicesEx.Put eller SWbemServicesEx.PutAsync.

-skript-API för WMI-

Skapa ett WMI-skript

uppdaterar en hel instans

Anropar en Metod