Sdílet prostřednictvím


Úlohy služby WMI: Monitorování výkonu

K přístupu k datům o výkonu počítače a jejich aktualizaci použijte třídy WMI, které získávají data z čítačů výkonu. Další příklady najdete na webu TechNet ScriptCenter na https://www.microsoft.com/technet. Další informace naleznete v tématu Knihovny výkonu a rozhraní WMI a Monitorování dat výkonu.

Příklady skriptů uvedené v tomto tématu získávají data pouze z místního počítače. Další informace o tom, jak pomocí skriptu získat data ze vzdálených počítačů, naleznete v tématu Připojení k rozhraní WMI na vzdáleném počítači.

Následující postup popisuje, jak spustit skript.

Spuštění skriptu

  1. Zkopírujte kód a uložte ho do souboru s příponou .vbs, například název_souboru.vbs. Ujistěte se, že textový editor nepřidá do souboru .txt příponu.
  2. Otevřete okno příkazového řádku a přejděte do adresáře, do kterého jste soubor uložili.
  3. Na příkazovém řádku zadejte cscript filename.vbs.
  4. Pokud nemáte přístup k protokolu událostí, zkontrolujte, jestli používáte příkazový řádek se zvýšenými oprávněními. Některé protokoly událostí, jako je protokol událostí zabezpečení, můžou být chráněné řízením uživatelských přístupů (UAC).

Poznámka

Ve výchozím nastavení cscript zobrazí výstup skriptu v okně příkazového řádku. Vzhledem k tomu, že skripty rozhraní WMI můžou vytvářet velké objemy výstupu, můžete chtít výstup přesměrovat na soubor. Na příkazovém řádku zadejte cscript filename.vbs > outfile.txt a přesměrujte výstup skriptu název_souboru.vbs do outfile.txt.

Následující tabulka uvádí příklady skriptů, které lze použít k získání různých typů dat z místního počítače.

Jak můžu... Třídy nebo metody služby WMI
... získat ve skriptu data čítače výkonu, která vidím v nástroji Perfmon? Použijte třídy, které mají názvy začínající "Win32_PerfFormattedData", například Win32_PerfFormattedData_PerfProc_Process. Vlastnosti s názvy jako PageFileBytes odpovídají čítačům výkonu, které vidíte v nástroji Perfmon. Třídy "Win32_PerfFormattedData" vypočítají konečné hodnoty čítačů za vás.
... Získat průběžná data o výkonu pro jeden proces, diskovou jednotku a další data? Použijte Win32_PerfFormattedData_PerfProc_Process nebo odpovídající naformátovanou třídu čítače výkonu a metodu SWbemObjectEx.Refresh_. Další informace naleznete v tématu Skriptování pomocí SWbemObject.
V jazyce C++ použijte IWbemConfigureRefresher::AddObjectByPath a IWbemRefresher::Refresh. Další informace najdete v tématu Monitorování dat výkonu.
Následující skript se spustí, dokud se počítač nerestartuje, služba WMI se zastaví nebo se skript zastaví. Pokud chcete skript zastavit ručně, ukončete proces pomocí Správce úloh. Pokud ji chcete programově zastavit, použijte metodu Terminate ve třídě 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

... získat průběžná data o výkonu pro všechny procesy bez opakovaného dotazování?

Použijte třídy, které mají názvy začínající "Win32_PerfFormattedData" a objekt SWbemRefresher. Držitel obnovy uchovává objekty, takže kolekci nemusíte opakovaně získávat. K výpočtu dat o výkonu je potřeba minimálně dvě hodnoty, protože většina čítačů je čítačů rychlosti. Při prvním zobrazení obnovených dat jsou prázdná.

Následující skript poběží po neomezenou dobu, dokud se počítač nerestartuje, služba WMI se zastaví nebo se skript zastaví. Pokud chcete skript zastavit ručně, ukončete proces pomocí Správce úloh. Pokud ji chcete programově zastavit, použijte metodu Terminate ve třídě Win32_Process.

Visual Basic
              
              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

... získat a vypočítat údaje o výkonu pro procesy ve Windows 2000?

Použijte třídy "Win32_PerfRawData", například Win32_PerfRawData_PerfProc_Process. Získejte data vlastností, například PercentProcessorTime, dvakrát pro konkrétní proces. Vyhledejte vzorec zadaný v CounterType kvalifikátoru pro vlastnost a vypočtěte. CounterType v daném příkladu je PERF_100NSEC_TIMER_INV. Další informace najdete v tématu Monitorování dat výkonu.

Následující skript poběží po neomezenou dobu, dokud se počítač nerestartuje, služba WMI se zastaví nebo se skript zastaví. Pokud chcete skript zastavit ručně, ukončete proces pomocí Správce úloh. Pokud ji chcete programově zastavit, použijte metodu Terminate ve třídě 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

úlohy rozhraní WMI pro skripty a aplikace

příklady aplikací jazyka WMI C++

TechNet ScriptCenter