Prozesse überwachen in PowerShell – ohne externe Tools, mit Stil und Klarheit.
In der Unix-Welt ist htop
ein bewährtes Werkzeug zur Prozessüberwachung in Echtzeit. Es bietet Übersicht, Sortierfunktionen und eine ansprechende, interaktive Darstellung. Doch was tun, wenn man auf Windows, macOS oder Linux arbeitet – und PowerShell das bevorzugte Werkzeug ist?
In diesem Artikel zeige ich dir, wie du mit reinem PowerShell ein leichtgewichtiges htop
-Äquivalent baust: übersichtlich, schnell und ohne Abhängigkeiten – plattformübergreifend!
Ziel: Ein schlankes PowerShell-htop
Unsere Anforderungen:
- ❌ Kein Modulimport, keine externen Tools
- ✅ Übersichtliche Echtzeitausgabe von CPU- und Speichernutzung
- ✅ Parameter für die Anzahl der angezeigten Prozesse
- ✅ Einheitliches, kompaktes Layout – auch bei langen Prozessnamen
Das Skript
Hier ist das vollständige Skript:
param(
[int]$Top = 20
)
function Format-ProcessList {
param([int]$TopCount)
$processes = Get-Process |
Sort-Object CPU -Descending |
Select-Object -First $TopCount Name, Id, CPU, PM |
ForEach-Object {
$name = $_.Name
if ($name.Length -gt 25) {
$name = $name.Substring(0, 22) + "..."
}
[PSCustomObject]@{
Name = $name
Id = $_.Id
CPU = "{0,6:N1}" -f ($_.CPU)
MemMB = "{0,8:N1}" -f ($_.PM / 1MB)
}
}
$header = "{0,-25} {1,6} {2,6} {3,8}" -f "Prozessname", "PID", "CPU", "Mem(MB)"
$line = "-" * $header.Length
Clear-Host
Write-Host $header -ForegroundColor Cyan
Write-Host $line
foreach ($proc in $processes) {
"{0,-25} {1,6} {2,6} {3,8}" -f $proc.Name, $proc.Id, $proc.CPU, $proc.MemMB
}
}
while ($true) {
Format-ProcessList -TopCount $Top
Start-Sleep -Seconds 1
}
Ausführen
Speichere das Skript als htop.ps1
und führe es mit PowerShell aus:
pwsh ./htop.ps1
Optional kannst du mit dem Parameter -Top
die Anzahl der angezeigten Prozesse festlegen:
pwsh ./htop.ps1 -Top 10
🧾 Beispielausgabe
Prozessname PID CPU Mem(MB)
---------------------------------------------
chrome 11092 15.2 512.3
pwsh 22900 8.9 75.2
Teams 20763 7.3 411.8
Outlook 15044 6.1 303.5
...
Lange Prozessnamen werden automatisch gekürzt, um das Layout nicht zu stören – so bleibt die Übersicht stets gewahrt.
📈 Was zeigt dieses Skript?
CPU
: Die bisher verbrauchte Prozessorzeit (nicht Prozentanteil!)Mem(MB)
: Der Speicherverbrauch in Megabyte (Private Memory)
Diese Metriken geben dir einen soliden Überblick, welche Prozesse dein System gerade fordern.
Erweiterungsideen
Möchtest du das Skript ausbauen? Hier ein paar Anregungen:
- Umschalten zwischen Sortierung nach CPU und Speicher
- Einfärbung besonders speicher- oder CPU-hungriger Prozesse
- ASCII-Bar-Graphen für CPU-Auslastung
- Ausgabe als HTML oder CSV zur Weiterverarbeitung
Fazit
Mit nur wenigen Zeilen PowerShell-Code kannst du dir ein elegantes, plattformübergreifendes Monitoring-Tool bauen – ganz ohne externe Tools oder Module. Besonders auf Systemen, wo du keinen Zugriff auf klassische Unix-Tools hast, ist dieses Skript ein praktischer Helfer.