WMI-Aufgaben: 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 und Überwachen von Leistungsdaten.

Die in diesem Thema gezeigten Skriptbeispiele rufen Daten nur vom lokalen Computer ab. Weitere Informationen zur Verwendung des Skripts zum Abrufen von Daten von Remotecomputern finden Sie unter Herstellen einer Verbindung mit WMI auf einem Remotecomputer.

Im folgenden Verfahren wird beschrieben, wie Ein Skript ausgeführt wird.

So führen Sie ein Skript aus

  1. Kopieren Sie den Code, und speichern Sie ihn in einer Datei mit der Erweiterung .vbs, z. B.filename.vbs. Stellen Sie sicher, dass Ihr Text-Editor der Datei keine .txt Erweiterung hinzufüg.
  2. Öffnen Sie ein Eingabeaufforderungsfenster, und navigieren Sie zu dem Verzeichnis, in dem Sie die Datei gespeichert haben.
  3. Geben Sie an der Eingabeaufforderung cscript filename.vbs ein.
  4. Wenn Sie nicht auf ein Ereignisprotokoll zugreifen können, überprüfen Sie, ob Sie über eine Eingabeaufforderung mit erhöhten Rechten ausführen. Einige Ereignisprotokolle, z. B. das Sicherheitsereignisprotokoll, können durch Benutzerzugriffssteuerungen (User Access Controls, UAC) geschützt werden.

Hinweis

Standardmäßig zeigt cscript die Ausgabe eines Skripts im Eingabeaufforderungsfenster an. Da WMI-Skripts große Mengen von Ausgaben erzeugen können, sollten Sie die Ausgabe an eine Datei umleiten. Geben Sie cscript filename.vbs > outfile.txt an der Eingabeaufforderung ein, um die Ausgabe des filename.vbs Skripts anoutfile.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
... Rufen Sie die Leistungsindikatordaten ab, die im Perfmon-Hilfsprogramm in einem Skript angezeigt werden? 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 " endgültigen Werte von Leistungsindikatoren für Sie.
... Erhalten Sie laufende Leistungsdaten für einen einzelnen Prozess, ein Laufwerk und andere Daten? Verwenden Sie die Win32_PerfFormattedData_PerfProc_Process oder die entsprechende formatierte Leistungsindikatorklasse und die SWbemObjectEx.Refresh_-Methode. 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, verwenden Sie Task-Manager, um den Prozess zu beenden. Verwenden Sie zum programmgesteuerten Beenden die Terminate-Methode 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

... Erhalten Sie laufende Leistungsdaten für alle Prozesse ohne wiederholte Abrufe?

Verwenden Sie Klassen mit Namen, die mit " Win32_PerfFormattedData " und einem SWbemRefresher-Objekt beginnen. Die Aktualisierung enthält die -Objekte, sodass Sie die Auflistung nicht wiederholt abrufen müssen. Zum Berechnen der Leistungsdaten sind mindestens zwei Werte erforderlich, da die meisten Leistungsindikatoren Ratenindikatoren sind. 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, verwenden Sie Task-Manager, um den Prozess zu beenden. Verwenden Sie zum programmgesteuerten Beenden die Terminate-Methode 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 in Windows 2000?

Verwenden Sie die " Win32_PerfRawData " Klassen, z. B. Win32_PerfRawData_PerfProc_Process. Abrufen der Eigenschaftsdaten, z. B. PercentProcessorTime,zweimal für einen bestimmten Prozess. Suchen Sie nach der Formel, die im CounterType-Qualifizierer für die Eigenschaft angegeben ist, und berechnen Sie sie. Der CounterType 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, verwenden Sie Task-Manager, um den Prozess zu beenden. Verwenden Sie zum programmgesteuerten Beenden die Terminate-Methode 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