Partilhar via


Tarefas WMI: Monitoramento de desempenho

Utilize as classes WMI que obtêm dados de contadores de desempenho para aceder e atualizar dados sobre o desempenho do computador. Para obter outros exemplos, consulte o TechNet ScriptCenter em https://www.microsoft.com/technet. Para obter mais informações, consulte Bibliotecas de desempenho e WMI e Monitorização de Dados de Desempenho.

Os exemplos de script mostrados neste tópico obtêm dados somente do computador local. Para obter mais informações sobre como usar o script para obter dados de computadores remotos, consulte Conectando-se ao WMI em um computador remoto.

O procedimento a seguir descreve como executar um script.

Para executar um script

  1. Copie o código e salve-o em um arquivo com uma extensão .vbs, como filename.vbs. Certifique-se de que o editor de texto não adiciona uma extensão .txt ao arquivo.
  2. Abra uma janela de prompt de comando e navegue até o diretório onde você salvou o arquivo.
  3. Digite cscript filename.vbs na linha de comandos.
  4. Se não conseguir aceder a um registo de eventos, verifique se está a executar a partir de uma linha de comandos elevados. Alguns Registos de Eventos, como o Registo de Eventos de Segurança, podem estar protegidos por Controlo de Acesso do Utilizador (UAC).

Observação

Por padrão, o cscript exibe a saída de um script na janela do prompt de comando. Como os scripts WMI podem produzir grandes quantidades de saída, convém redirecionar a saída para um arquivo. Digite cscript filename.vbs > outfile.txt no prompt de comando para redirecionar a saída do script filename.vbs para outfile.txt.

A tabela a seguir lista exemplos de script que podem ser usados para obter vários tipos de dados do computador local.

Como faço para... Classes ou métodos WMI
... obter os dados dos contadores de desempenho que posso ver no utilitário Perfmon num script? Use classes que tenham nomes que comecem com "Win32_PerfFormattedData", por exemplo, Win32_PerfFormattedData_PerfProc_Process. Propriedades com nomes como PageFileBytes correspondem aos contadores de desempenho que você vê no Perfmon. As classes "Win32_PerfFormattedData" calculam os valores finais dos contadores para você.
... Obter dados de desempenho contínuos para um único processo, unidade de disco e outros dados? Use o Win32_PerfFormattedData_PerfProc_Process ou o de classe do contador de desempenho de formatado apropriado e o método SWbemObjectEx.Refresh_. Para obter mais informações, consulte Scripting with SWbemObject.
Em C++, use IWbemConfigureRefresher::AddObjectByPath e IWbemRefresher::Refresh. Para obter mais informações, consulte Monitorização de Dados de Desempenho.
O script a seguir é executado até que o computador seja reiniciado, o WMI seja interrompido ou o script seja interrompido. Para parar o script manualmente, use o Gerenciador de Tarefas para parar o processo. Para pará-lo programaticamente, use o método Terminate na classe Win32_Process.

VB
              
              strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") set PerfProcess = objWMIService.Get(_ "Win32_PerfFormattedData_PerfProc_Process.Name='Idle'") 

Enquanto (Verdadeiro) PerfProcess.Refresh_
Wscript.Echo PerfProcess.PercentProcessorTime Wscript.Sleep 1000 Wend

... Obter dados de desempenho contínuos para todos os processos sem sondagens repetidas?

Use classes que tenham nomes que comecem com "Win32_PerfFormattedData" e um objeto SWbemRefresher. A atualização mantém os objetos para que você não precise obter a coleção repetidamente. Um mínimo de dois valores são necessários para calcular os dados de desempenho porque a maioria dos contadores são contadores de taxa. A primeira vez que você exibe os dados de atualização, ele está vazio.

O script a seguir é executado indefinidamente até que o computador seja reinicializado, o WMI seja interrompido ou o script seja interrompido. Para parar o script manualmente, use o Gerenciador de Tarefas para parar o processo. Para pará-lo programaticamente, use o método Terminate na classe Win32_Process.

VB
              
              strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set objRefresher = CreateObject("WbemScripting.Swbemrefresher") Set objProcessor = objRefresher.AddEnum _ (objWMIService, _ "Win32_PerfFormattedData_PerfOS_Processor").ObjectSet 

While (True) objRefresher.Refresh For each RefreshItem in objRefresher For each objProcess in RefreshItem.ObjectSet Wscript.Echo objProcess.GetObjectText_ Next Next Wscript.Sleep 5000 Wend

... obter e calcular dados de desempenho para processos no Windows 2000?

Utilize as classes "Win32_PerfRawData", como Win32_PerfRawData_PerfProc_Process. Obtenha os dados da propriedade, como PercentProcessorTime, duas vezes para um processo específico. Procure a fórmula especificada no qualificador CounterType para a propriedade e calcule. O CounterType no exemplo é PERF_100NSEC_TIMER_INV. Para obter mais informações, consulte Monitorização de Dados de Desempenho.

O script a seguir é executado indefinidamente até que o computador seja reinicializado, o WMI seja interrompido ou o script seja interrompido. Para parar o script manualmente, use o Gerenciador de Tarefas para parar o processo. Para pará-lo programaticamente, use o método Terminate na classe Win32_Process.

VB
              
              strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") 

While (True) Set object1 = objWMIService.Get( _ "Win32_PerfRawData_PerfOS_Processor.Name='_Total'") N1 = object1.PercentProcessorTime D1 = object1.TimeStamp_Sys100NS Wscript.Sleep(1000) set object2 = objWMIService.Get( _ "Win32_PerfRawData_PerfOS_Processor.Name='_Total'") N2 = object2.PercentProcessorTime D2 = object2.TimeStamp_Sys100NS ' CounterType - PERF_100NSEC_TIMER_INV ' Formula - (1- ((N2 - N1) / (D2 - D1))) x 100 PercentProcessorTime = (1 - ((N2 - N1)/(D2-D1)))*100 Wscript.Echo "% Processor Time=" , PercentProcessorTime Wend

tarefas WMI para scripts e aplicativos

Exemplos de aplicativos WMI C++

TechNet ScriptCenter