Attività WMI: Monitoraggio delle prestazioni

Utilizzare le classi WMI che ottengono dati dai contatori delle prestazioni per accedere e aggiornare i dati sulle prestazioni del computer. Per altri esempi, vedere TechNet ScriptCenter all'indirizzo https://www.microsoft.com/technet. Per altre informazioni, vedere Librerie delle prestazioni e WMI e Dati sulle prestazioni di monitoraggio.

Gli esempi di script illustrati in questo argomento ottengono dati solo dal computer locale. Per altre informazioni su come usare lo script per ottenere dati da computer remoti, vedere Connessione a WMI in un computer remoto.

La procedura seguente descrive come eseguire uno script.

Per eseguire uno script

  1. Copiare il codice e salvarlo in un file con estensione vbs, ad esempio filename.vbs. Assicurarsi che l'editor di testo non aggiunga un'estensione .txt al file.
  2. Aprire una finestra del prompt dei comandi e passare alla directory in cui è stato salvato il file.
  3. Digitare cscript filename.vbs al prompt dei comandi.
  4. Se non è possibile accedere a un registro eventi, verificare se si esegue da un prompt dei comandi con privilegi elevati. Alcuni registri eventi, ad esempio il registro eventi di sicurezza, possono essere protetti da controlli di accesso utente.

Nota

Per impostazione predefinita, cscript visualizza l'output di uno script nella finestra del prompt dei comandi. Poiché gli script WMI possono produrre grandi quantità di output, è possibile reindirizzare l'output a un file. Digitare cscript filename.vbs > outfile.txt al prompt dei comandi per reindirizzare l'output dello script filename.vbs a outfile.txt.

Nella tabella seguente sono elencati gli esempi di script che possono essere usati per ottenere vari tipi di dati dal computer locale.

Ricerca per categorie Classi o metodi WMI
... ottenere i dati del contatore delle prestazioni visualizzati nell'utilità Perfmon in uno script? Usare classi con nomi che iniziano con "Win32_PerfFormattedData", ad esempio Win32_PerfFormattedData_PerfProc_Process. Le proprietà con nomi come PageFileBytes corrispondono ai contatori delle prestazioni visualizzati in Perfmon. Le classi "Win32_PerfFormattedData" calcolano automaticamente i valori finali dei contatori.
... ottenere dati sulle prestazioni per un singolo processo, unità disco e altri dati? Usare il Win32_PerfFormattedData_PerfProc_Process o la classe del contatore delle prestazioni formattata appropriata e il metodo SWbemObjectEx.Refresh_ . Per altre informazioni, vedere Creazione di script con SWbemObject.
In C++ usare IWbemConfigureRefresher::AddObjectByPath e IWbemRefresher::Refresh. Per altre informazioni, vedere Monitoraggio dei dati sulle prestazioni.
Lo script seguente viene eseguito finché il computer non viene riavviato, WMI viene arrestato o lo script viene arrestato. Per arrestare manualmente lo script, usare Gestione attività per arrestare il processo. Per arrestarla a livello di codice, usare il metodo Terminate nella classe Win32_Process .

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

While (True) PerfProcess.Refresh_
Wscript.Echo PerfProcess.PercentProcessorTime Wscript.Sleep 1000 Wend

... ottenere dati sulle prestazioni in corso per tutti i processi senza polling ripetuto?

Usare classi con nomi che iniziano con "Win32_PerfFormattedData" e un oggetto SWbemRefresher . L'aggiornamento contiene gli oggetti in modo che non sia necessario ottenere ripetutamente la raccolta. Per calcolare i dati sulle prestazioni sono necessari almeno due valori, perché la maggior parte dei contatori è contatori di frequenza. La prima volta che vengono visualizzati i dati di aggiornamento, i dati sono vuoti.

Lo script seguente viene eseguito per un periodo illimitato fino a quando il computer non viene riavviato, WMI viene arrestato o lo script viene arrestato. Per arrestare manualmente lo script, usare Gestione attività per arrestare il processo. Per arrestarla a livello di codice, usare il metodo Terminate nella 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

... ottenere e calcolare i dati sulle prestazioni per i processi in Windows 2000?

Usare le classi "Win32_PerfRawData", ad esempio Win32_PerfRawData_PerfProc_Process. Ottenere i dati della proprietà, ad esempio PercentProcessorTime, due volte per un processo specifico. Cercare la formula specificata nel qualificatore CounterType per la proprietà e calcolare. CounterType nell'esempio è PERF_100NSEC_TIMER_INV. Per altre informazioni, vedere Monitoraggio dei dati sulle prestazioni.

Lo script seguente viene eseguito per un periodo illimitato fino a quando il computer non viene riavviato, WMI viene arrestato o lo script viene arrestato. Per arrestare manualmente lo script, usare Gestione attività per arrestare il processo. Per arrestarla a livello di codice, usare il metodo Terminate nella 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

Attività WMI per script e applicazioni

Esempi di applicazioni WMI C++

TechNet ScriptCenter