Partilhar via


Criação de scripts com SWbemObject

O objeto de script SWbemObject é o objeto WMI genérico, definindo propriedades e métodos que podem ser usados independentemente do objeto WMI específico ao qual o objeto SWbemObject está vinculado. Todos os objetos WMI, como uma instância de Win32_Process ou qualquer outra classe de dados WMI, são representados por SWbemObject e podem usar o SWbemObject propriedades e métodos comuns, além de suas próprias propriedades e métodos particulares.

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 tanto a definição de classe Win32_Process quanto 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 Alerter e o armazena em objAlerter. Em seguida, pode chamar os métodos SWbemObject, como o WScript.Echo objAlerter.Path_, ou os métodos definidos pela classe de dados, como o WScript.Echo objAlerter.State. objAlerter que representa tanto uma instância de Win32_Service como uma 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 WMI genérico, SWbemObjectSet. Conforme mostrado, o objeto SWbemObjectSet pode ser tratado como uma coleção .

Set clsobjProcess = objWMIServices.Get("Win32_Process")

Você pode identificar os métodos SWbemObject porque todos eles terminam com um sublinhado (_), por exemplo, SWbemObject.Instances_.

SWbemObjectEx estende as propriedades de SWbemObject. Por exemplo, agora pode-se atualizar os dados de qualquer objeto WMI, como uma instância de Win32_Process, através de 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 WMI em scripts.

Os SWbemObject.Put_ e PutAsync_ permitem que você escreva as alterações de volta em qualquer objeto WMI. Esses métodos só confirmam alterações em um objeto no namespace onde o objeto foi criado. Você pode gravar o objeto em um namespace diferente usando SWbemServicesEx.Put ou SWbemServicesEx.PutAsync.

API de script para WMI

Criando um script WMI

Atualizando uma instância inteira

Chamando um método