WMI-Tasks: Leistungsüberwachung

Verwenden Sie die WMI-Klassen, die Daten aus Leistungsindikatoren abrufen, um auf Daten zur Computerleistung zuzugreifen und diese zu aktualisieren. Weitere Beispiele finden Sie im TechNet ScriptCenter unter https://www.microsoft.com/technet. Weitere Informationen finden Sie unter Leistungsbibliotheken und WMI sowie Überwachen von Leistungsdaten.

In den in diesem Themenbereich aufgeführten Skriptbeispielen werden Daten nur vom lokalen Computer abgerufen. Weitere Informationen zum Verwenden des Skripts zum Abrufen von Daten von Remotecomputern finden Sie unter Herstellen einer Verbindung mit WMI auf einem Remotecomputer.

Nachstehend wird die Skriptausführung näher beschrieben.

So führen Sie ein Skript aus

  1. Kopieren Sie den Code, und speichern Sie ihn in einer Datei mit VBS-Erweiterung, z. B. filename.vbs. Stellen Sie sicher, dass der Text-Editor der Datei keine TXT-Erweiterung hinzufügt.
  2. Öffnen Sie ein Eingabeaufforderungsfenster, und navigieren Sie zu dem Verzeichnis, in dem Sie die Datei gespeichert haben.
  3. Geben Sie cscript filename.vbs in die Eingabeaufforderung ein.
  4. Wenn Sie nicht auf ein Ereignisprotokoll zugreifen können, überprüfen Sie, ob Sie eine Eingabeaufforderung mit erhöhten Rechten verwenden. Einige Ereignisprotokolle, z. B. das Sicherheitsereignisprotokoll, können durch die Benutzerkontensteuerung (User Account Control, UAC) geschützt sein.

Hinweis

Standardmäßig zeigt cscript die Ausgabe eines Skripts im Eingabeaufforderungsfenster an. Da WMI-Skripts sehr viele Ausgabedaten erzeugen können, sollten Sie die Ausgabe in eine Datei umleiten. Geben Sie cscript filename.vbs > outfile.txt in die Eingabeaufforderung ein, um die Ausgabe des Skripts filename.vbs an outfile.txt umzuleiten.

In der folgenden Tabelle sind Skriptbeispiele aufgeführt, die zum Abrufen verschiedener Datentypen vom lokalen Computer verwendet werden können.

Vorgehensweisen WMI-Klassen oder -Methoden
...Abrufen der im Perfmon-Hilfsprogramm in einem Skript angezeigten Leistungsindikatordaten. Verwenden Sie Klassen mit Namen, die mit „Win32_PerfFormattedData“ beginnen, z. B. Win32_PerfFormattedData_PerfProc_Process. Eigenschaften mit Namen wie PageFileBytes entsprechen Leistungsindikatoren, die in Perfmon angezeigt werden. Die „Win32_PerfFormattedData“-Klassen berechnen die Endwerte von Leistungsindikatoren für Sie.
...Abrufen fortlaufender Leistungsdaten für einzelne Prozesse oder Laufwerke und andere Daten. Verwenden Sie Win32_PerfFormattedData_PerfProc_Process oder die korrekt formatierte Leistungsindikatorklasse und die Methode SWbemObjectEx.Refresh_. Weitere Informationen finden Sie unter Skripterstellung mit „SWbemObject“.
Verwenden Sie in C++ IWbemConfigureRefresher::AddObjectByPath und IWbemRefresher::Refresh. Weitere Informationen finden Sie unter Überwachen von Leistungsdaten.
Das folgende Skript wird ausgeführt, bis der Computer neu gestartet, WMI beendet oder das Skript beendet wird. Um das Skript manuell zu beenden, beenden Sie den Prozess mithilfe des Task-Managers. Verwenden Sie zum programmgesteuerten Beenden die Methode Terminate in der Win32_Process-Klasse.

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

...Abrufen fortlaufender Leistungsdaten für alle Prozesse ohne wiederholtes Abrufen.

Verwenden Sie Klassen mit Namen, die mit „Win32_PerfFormattedData“ beginnen, und ein SWbemRefresher-Objekt. Das Aktualisierungsprogramm enthält die Objekte, sodass Sie die Sammlung nicht wiederholt abrufen müssen. Zum Berechnen von Leistungsdaten sind mindestens zwei Werte erforderlich, da es sich bei den meisten Leistungsindikatoren um Frequenzzähler handelt. Wenn Sie die Aktualisierungsdaten zum ersten Mal anzeigen, sind sie leer.

Das folgende Skript wird unbegrenzt ausgeführt, bis der Computer neu gestartet, WMI beendet oder das Skript beendet wird. Um das Skript manuell zu beenden, beenden Sie den Prozess mithilfe des Task-Managers. Verwenden Sie zum programmgesteuerten Beenden die Methode Terminate in der Win32_Process-Klasse.

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

...Abrufen und Berechnen von Leistungsdaten für Prozesse unter Windows 2000.

Verwenden Sie die Win32_PerfRawData-Klassen, z. B. Win32_PerfRawData_PerfProc_Process. Rufen Sie die Eigenschaftsdaten, z. B. PercentProcessorTime, für einen bestimmten Prozess zweimal ab. Schlagen Sie die im Qualifizierer CounterType angegebene Formel für die Eigenschaft nach, und berechnen Sie sie. Das „CounterType“-Objekt im Beispiel ist PERF_100NSEC_TIMER_INV. Weitere Informationen finden Sie unter Überwachen von Leistungsdaten.

Das folgende Skript wird unbegrenzt ausgeführt, bis der Computer neu gestartet, WMI beendet oder das Skript beendet wird. Um das Skript manuell zu beenden, beenden Sie den Prozess mithilfe des Task-Managers. Verwenden Sie zum programmgesteuerten Beenden die Methode Terminate in der Win32_Process-Klasse.

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

WMI-Aufgaben für Skripts und Anwendungen

WMI-C++-Anwendungsbeispiele

TechNet ScriptCenter