Scripting met SWbemObject
Het SWbemObject scriptobject is het algemene WMI-object, het definiëren van eigenschappen en methoden die kunnen worden gebruikt, ongeacht het specifieke WMI-object waaraan het SWbemObject object is gebonden. Alle WMI-objecten, zoals een exemplaar van Win32_Process of een andere WMI-gegevensklasse, worden vertegenwoordigd door SWbemObject en kunnen de SWbemObject algemene eigenschappen en methoden naast hun eigen specifieke eigenschappen en methoden gebruiken.
Gebruik bijvoorbeeld het volgende script om alle exemplaren van een Win32_Process te verkrijgen door de methode SWbemObject.Instances_ aan te roepen. De clsobjProcess vertegenwoordigt zowel de Win32_Process klassedefinitie als een 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
In het volgende voorbeeld wordt een specifiek exemplaar van Win32_Service verkregen dat de Alerter-service vertegenwoordigt en opslaat in objAlerter. Vervolgens kunt u SWbemObject methoden aanroepen, zoals WScript.Echo objAlerter.Path_ of methoden die zijn gedefinieerd door de gegevensklasse, zoals WScript.Echo objAlerter.State. objAlerter die zowel een exemplaar van Win32_Service als een SWbemObjectvertegenwoordigt.
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
De aanroep van SWbemObject.Instances_ krijgt een ander algemeen WMI-scriptobject, SWbemObjectSet. Zoals wordt weergegeven, kan het SWbemObjectSet object worden behandeld als een verzameling.
Set clsobjProcess = objWMIServices.Get("Win32_Process")
U kunt de SWbemObject methoden identificeren, omdat ze allemaal eindigen met een onderstrepingsteken (_), bijvoorbeeld SWbemObject.Instances_.
SWbemObjectEx breidt de eigenschappen van SWbemObject-uit. U kunt nu bijvoorbeeld de gegevens van elk WMI-object, zoals een exemplaar van Win32_Process, bijwerken door een aanroep naar SWbemObjectEx.Refresh_.
In het volgende voorbeeld ziet u hoe foutgegevens van de systeemprocespagina om de vijf seconden kunnen worden vernieuwd.
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
Zie WMI-gegevens vernieuwen in scriptsvoor meer informatie over het vernieuwen van gegevens met behulp van een SWbemRefresher-object.
Met de SWbemObject.Put_ en PutAsync_ kunt u wijzigingen terugschrijven naar elk WMI-object. Met deze methoden worden alleen wijzigingen doorgevoerd in een object in de naamruimte waarin het object is gemaakt. U kunt het object naar een andere naamruimte schrijven met behulp van SWbemServicesEx.Put of SWbemServicesEx.PutAsync.
Verwante onderwerpen