Szkriptelés az SWbemObject használatával
A SWbemObject parancsfájl-objektum az általános WMI-objektum, amely a SWbemObject objektumhoz kötött adott WMI-objektumtól függetlenül használható tulajdonságokat és metódusokat definiál. Minden WMI-objektumot, például a Win32_Process egy példányát vagy bármely más WMI-adatosztályt SWbemObject jelöl, és a SWbemObject közös tulajdonságokat és metódusokat használhatja a saját tulajdonságaik és metódusaik mellett.
Az alábbi szkripttel például lekérjük egy Win32_Process összes példányát a SWbemObject.Instances_ metódus meghívásával. A clsobjProcess képviseli mind a Win32_Process osztálydefiníciót, mind egy SWbemObjectobjektumot.
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
Az alábbi példa beolvas egy adott Win32_Service-példányt, amely a Riasztási szolgáltatást jelöli, és az objAlerterben tárolja. Ezután meghívhatja SWbemObject metódusokat, például a WScript.Echo objAlerter.Path_, vagy az adatosztály által definiált metódusokat, például wScript.Echo objAlerter.State. objAlerter, amely egy Win32_Service és egy SWbemObjectpéldányát képviseli.
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
A SWbemObject.Instances_ hívása egy másik általános WMI-szkriptobjektumot szerez be, SWbemObjectSet. Ahogy látható, az SWbemObjectSet objektum gyűjteményként kezelhető.
Set clsobjProcess = objWMIServices.Get("Win32_Process")
Az SWbemObject metódusok azonosíthatók, mert mindegyik aláhúzással (_) végződik, például SWbemObject.Instances_.
SWbemObjectEx kibővíti SWbemObjecttulajdonságait. Mostantól frissítheti például bármely WMI-objektum adatait, például a Win32_Processegy példányát a SWbemObjectEx.Refresh_hívásával.
Az alábbi példa bemutatja, hogyan frissíthetők a rendszerfolyamat lapjának hibaadatai öt másodpercenként.
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
További információ az adatok SWbemRefresher objektum használatával történő frissítéséről: WMI-adatok frissítése szkriptekben.
A SWbemObject.Put_ és a PutAsync_ lehetővé teszik a módosítások visszaírását bármely WMI-objektumba. Ezek a metódusok csak abban a névtérben véglegesítik a módosításokat, amelyben az objektum létre lett hozva. Az objektumot egy másik névtérbe is írhatja SWbemServicesEx.Put vagy SWbemServicesEx.PutAsync.
Kapcsolódó témakörök