PowerShell Befehle für Prozessüberwachung
Mit PowerShell prüfen, ob ein Programm ausgeführt wird
Die PowerShell ist ein mächtiges Werkzeug zur Automatisierung von Aufgaben unter Windows. Eine häufige Anforderung für Systemadministratoren oder Power-User ist es, zu überprüfen, ob ein bestimmtes Programm oder Prozess aktuell auf einem System läuft. In diesem Artikel zeige ich dir, wie du genau das mit PowerShell machst – einfach, effektiv und flexibel.
Warum sollte man den Status eines Programms prüfen?
Das Überprüfen, ob ein Programm ausgeführt wird, kann aus verschiedenen Gründen notwendig sein:
-
Monitoring von wichtigen Anwendungen
-
Vermeidung von Mehrfachstarts
-
Skripte an Bedingungen knüpfen, z. B. „Nur starten, wenn nicht bereits offen“
Methode 1: Mit Get-Process
prüfen
Die einfachste Methode ist die Verwendung von Get-Process
. Damit lässt sich feststellen, ob ein Prozess mit einem bestimmten Namen aktiv ist.
if (Get-Process -Name "notepad" -ErrorAction SilentlyContinue) {
Write-Host "Notepad ist geöffnet."
} else {
Write-Host "Notepad ist nicht geöffnet."
}
Hinweis: Der Name des Prozesses ist meist der ausführbare Dateiname ohne „.exe“. Beispiel: chrome.exe
→ chrome
.
Methode 2: Alternative mit Where-Object
(für komplexere Abfragen)
Wenn du z. B. nach bestimmten Parametern oder einem bestimmten Benutzer suchen möchtest:
$prozess = Get-Process | Where-Object { $_.ProcessName -eq "notepad" }
if ($prozess) {
Write-Host "Notepad läuft – PID: $($prozess.Id)"
} else {
Write-Host "Notepad läuft nicht."
}
Methode 3: Abfrage über WMI (für detaillierte Informationen)
Mit Get-WmiObject
bekommst du zusätzliche Informationen, z. B. den Pfad oder den Benutzer:
$prozess = Get-WmiObject Win32_Process -Filter "Name='notepad.exe'"
if ($prozess) {
Write-Host "Notepad läuft – gestartet von: $($prozess.GetOwner().User)"
} else {
Write-Host "Notepad läuft nicht."
}
Prüfung in einem Skript automatisieren
Du kannst dir ein PowerShell-Skript schreiben, das regelmäßig prüft, ob ein Programm läuft, und bei Bedarf eine Benachrichtigung ausgibt oder es startet:
$prozessName = "notepad"
if (-not (Get-Process -Name $prozessName -ErrorAction SilentlyContinue)) {
Start-Process “$prozessName.exe”
Write-Host “$prozessName wurde gestartet.”
} else {
Write-Host “$prozessName läuft bereits.”
}
Fazit
Mit PowerShell lässt sich ganz einfach überprüfen, ob ein bestimmtes Programm oder ein Prozess läuft. Abhängig von deinem Anwendungsfall kannst du einfache oder detaillierte Abfragen nutzen – von Get-Process
über WMI
bis hin zu komplexeren Skripten zur Automatisierung. Gerade im administrativen Alltag spart das viel Zeit und Aufwand.