Scripts com SWbemObject
O objeto de script SWbemObject é o objeto do WMI genérico, definindo propriedades e métodos que podem ser usados independentemente do objeto do WMI específico ao qual o objeto SWbemObject está associado. Todos os objetos do WMI, como uma instância de Win32_Process ou qualquer outra classe de dados do WMI, são representados por SWbemObject e podem usar as propriedades e métodos comuns SWbemObject, além de suas próprias propriedades e métodos específicos.
Por exemplo, use o script a seguir para obter todas as instâncias de um Win32_Process chamando o método SWbemObject.Instances_. O clsobjProcess representa a definição de classe Win32_Process e um 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
O exemplo a seguir obtém uma instância específica de Win32_Service que representa o serviço Alertador e o armazena em objAlerter. Em seguida, chame os métodos SWbemObject, como WScript.Echo objAlerter.Path_ ou métodos definidos pela classe de dados, como WScript.Echo objAlerter.State. O objAlerter, que representa uma instância de Win32_Service e um 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
A chamada para SWbemObject.Instances_ obtém outro objeto de script do WMI genérico, SWbemObjectSet. Conforme mostrado, o objeto SWbemObjectSet pode ser tratado como uma coleção.
Set clsobjProcess = objWMIServices.Get("Win32_Process")
Identifique os métodos SWbemObject porque todos eles terminam com um sublinhado (_), por exemplo, SWbemObject.Instances_.
SWbemObjectEx estende as propriedades de SWbemObject. Por exemplo, agora é possível atualizar os dados de qualquer objeto WMI, como uma instância de Win32_Process, por uma chamada para SWbemObjectEx.Refresh_.
O exemplo a seguir mostra como os dados de falha da página de processo do sistema podem ser atualizados a cada cinco segundos.
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
Para obter mais informações sobre como atualizar dados usando um objeto SWbemRefresher, consulte Atualizando dados do WMI em scripts.
O SWbemObject.Put_ e PutAsync_ permitem que você grave as alterações novamente em qualquer objeto WMI. Esses métodos confirmam apenas alterações em um objeto no namespace em que o objeto foi criado. Grave o objeto em um namespace diferente usando SWbemServicesEx.Put ou SWbemServicesEx.PutAsync.
Tópicos relacionados