Scripting con SWbemObject
Il oggetto di scripting SWbemObject è l'oggetto WMI generico, che definisce proprietà e metodi che possono essere utilizzati indipendentemente dall'oggetto WMI specifico a cui è associato l'oggetto SWbemObject. Tutti gli oggetti WMI, ad esempio un'istanza di Win32_Process o qualsiasi altra classe di dati WMI, sono rappresentati da SWbemObject e possono usare SWbemObject proprietà e metodi comuni oltre alle proprie proprietà e metodi specifici.
Ad esempio, usare lo script seguente per ottenere tutte le istanze di un Win32_Process chiamando il metodo SWbemObject.Instances_. ClsobjProcess rappresenta sia la definizione della classe Win32_Process che 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
Nell'esempio seguente viene ottenuta un'istanza specifica di Win32_Service che rappresenta il servizio Alerter e la archivia in objAlerter. È quindi possibile chiamare i metodi del SWbemObject, come WScript.Echo objAlerter.Path_, oppure i metodi definiti dalla classe di dati, come WScript.Echo objAlerter.State. objAlerter che rappresenta sia un'istanza di Win32_Service che un oggetto 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
La chiamata a SWbemObject.Instances_ ottiene un altro oggetto scripting WMI generico, SWbemObjectSet. Come illustrato, l'oggetto SWbemObjectSet può essere considerato come un insieme .
Set clsobjProcess = objWMIServices.Get("Win32_Process")
È possibile identificare i metodi SWbemObject perché terminano tutti con un carattere di sottolineatura (_), ad esempio SWbemObject.Instances_.
SWbemObjectEx estende le proprietà di SWbemObject. Ad esempio, è ora possibile aggiornare i dati di qualsiasi oggetto WMI, ad esempio un'istanza di Win32_Process, tramite una chiamata a SWbemObjectEx.Refresh_.
Nell'esempio seguente viene illustrato come aggiornare i dati di errore della pagina del processo di sistema ogni cinque secondi.
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
Per altre informazioni sull'aggiornamento dei dati tramite un oggettoSWbemRefresher, vedere Aggiornamento dei dati WMI negli script.
Le SWbemObject.Put_ e le PutAsync_ consentono di scrivere di nuovo le modifiche in qualsiasi oggetto WMI. Questi metodi eseguono solo il commit delle modifiche apportate a un oggetto nello spazio dei nomi in cui è stato creato l'oggetto. È possibile scrivere l'oggetto in uno spazio dei nomi diverso usando SWbemServicesEx.Put o SWbemServicesEx.PutAsync.
Argomenti correlati
-
API di scriptingper WMI