Wie kann ich in PowerShell Systeminformationen wie CPU-Auslastung und RAM-Verbrauch abfragen?

Melden
  1. Einführung
  2. CPU-Auslastung abfragen
  3. RAM-Verbrauch ermitteln
  4. Alternative Methode: Verwendung von Performance-Countern für RAM
  5. Zusammenfassendes Beispielscript
  6. Fazit

Einführung

PowerShell bietet umfangreiche Möglichkeiten, um detaillierte Systeminformationen abzurufen. Besonders wenn Sie die aktuelle CPU-Auslastung sowie den RAM-Verbrauch ermitteln möchten, können Sie auf integrierte Cmdlets und .NET-Klassen zurückgreifen. Im Folgenden erkläre ich, wie Sie diese Werte abfragen und interpretieren können.

CPU-Auslastung abfragen

Für die CPU-Auslastung gibt es verschiedene Ansätze. Eine einfache Methode ist die Verwendung des Cmdlets Get-Counter, mit dem Sie Performance-Counter-Daten abfragen können. Der Zähler \Processor(_Total)\% Processor Time liefert die Gesamt-CPU-Auslastung in Prozent.

Ein typisches Beispiel zum Abruf der aktuellen CPU-Auslastung sieht so aus:

Get-Counter \Processor(_Total)\% Processor Time | Select-Object -ExpandProperty CounterSamples | Select-Object -ExpandProperty CookedValue

Dieser Befehl gibt die aktuelle CPU-Auslastung als Zahl zurück. Da Performance-Counter in der Regel zeitlich gemittelte Werte liefern, kann es sinnvoll sein, mehrere Samples über einen Zeitraum einzuholen:

Get-Counter \Processor(_Total)\% Processor Time -SampleInterval 1 -MaxSamples 5 | Select-Object -ExpandProperty CounterSamples | Select-Object -ExpandProperty CookedValue

So können Sie eine aussagekräftigere Durchschnittswerte-Berechnung durchführen.

RAM-Verbrauch ermitteln

Zur Ermittlung des RAM-Verbrauchs können Sie auf verschiedene Wege zurückgreifen. PowerShell bietet das Cmdlet Get-CimInstance (oder in älteren Versionen Get-WmiObject), welches Systeminformationen über die Klasse Win32_OperatingSystem bereitstellt.

Ein Beispiel, um den gesamten physischen Speicher sowie den aktuell verfügbaren freien Arbeitsspeicher zu ermitteln, lautet:

$os = Get-CimInstance Win32_OperatingSystem$totalRAM = ::Round($os.TotalVisibleMemorySize / 1024, 2)$freeRAM = ::Round($os.FreePhysicalMemory / 1024, 2)"Gesamter RAM: $totalRAM MB""Freier RAM: $freeRAM MB"

Die Werte TotalVisibleMemorySize und FreePhysicalMemory werden in Kilobyte zurückgegeben, weshalb eine Umrechnung in Megabyte erfolgt.

Um den aktuell genutzten RAM zu ermitteln, können Sie einfach die Differenz bilden:

$usedRAM = $totalRAM - $freeRAM"Genutzter RAM: $usedRAM MB"

Alternative Methode: Verwendung von Performance-Countern für RAM

Alternativ können Sie auch RAM-bezogene Performance-Counter auslesen, beispielsweise \Memory\Available MBytes um den verfügbaren Speicher in MB abzufragen:

Get-Counter \Memory\Available MBytes | Select-Object -ExpandProperty CounterSamples | Select-Object -ExpandProperty CookedValue

In Kombination mit bekanntem Gesamtspeicher können Sie daraus ebenfalls den Verbrauch ableiten.

Zusammenfassendes Beispielscript

Hier ein kleines PowerShell-Skript, das sowohl die CPU-Auslastung als auch den RAM-Verbrauch zusammenfasst:

# CPU-Auslastung ermitteln

$cpuUsage = Get-Counter \Processor(_Total)\% Processor Time | Select-Object -ExpandProperty CounterSamples | Select-Object -ExpandProperty CookedValue

$cpuUsageFormatted = ::Round($cpuUsage, 2)# RAM-Informationen abfragen$os = Get-CimInstance Win32_OperatingSystem$totalRAM = ::Round($os.TotalVisibleMemorySize / 1024, 2)$freeRAM = ::Round($os.FreePhysicalMemory / 1024, 2)$usedRAM = ::Round($totalRAM - $freeRAM, 2)# AusgabeWrite-Output "CPU-Auslastung: $cpuUsageFormatted %"Write-Output "Gesamter RAM: $totalRAM MB"Write-Output "Freier RAM: $freeRAM MB"Write-Output "Genutzter RAM: $usedRAM MB"

$cpuUsage = Get-Counter \Processor(_Total)\% Processor Time | Select-Object -ExpandProperty CounterSamples | Select-Object -ExpandProperty CookedValue

Fazit

Mit PowerShell lassen sich CPU- und RAM-Auslastung schnell und einfach abfragen. Die Kombination aus Get-Counter für dynamische Performance-Daten und Get-CimInstance für statische Systeminformationen bietet dabei eine solide Grundlage für Monitoring-Skripte oder Diagnosen. Durch das Formatieren und Rundungen können Sie die Ausgabe benutzerfreundlich gestalten.

0
0 Kommentare