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.
Relaterade ämnen