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.

API de Script para o WMI

Como criar um script do WMI

Atualizar uma instância inteira

Chamar um método