Warum Fehlerbehandlung wichtig ist
Wenn Skripte Operationen wie Dateioperationen oder Prozessverwaltung durchführen, können unerwartete Fehler auftreten. Ohne geeignete Fehlerbehandlung bleiben diese oft unbemerkt, was die Fehlersuche erschwert.
Richtige Fehlerbehandlung:
• Erhöht die Stabilität des Skripts
• Liefert hilfreiche Informationen zum Debuggen
• Verhindert, dass Skripte unerwartet abbrechen
⸻
Verwendung von Try-Catch-Blöcken
Ein Grundbaustein der Fehlerbehandlung in PowerShell ist der Einsatz von try-catch-Blöcken. So kann man einen Befehl ausführen und eventuelle Fehler sauber abfangen:
try {
Get-Content -Path „C:nichtvorhandeneDatei.txt“
} catch {
Write-Output „Etwas ist schiefgelaufen: $_“
}
Damit dies zuverlässig funktioniert, sollte der ErrorAction-Parameter auf Stop gesetzt werden, um auch nicht-abbrechende Fehler zu erfassen:
Get-Content -Path „C:nichtvorhandeneDatei.txt“ -ErrorAction Stop
Logging mit $_ und .Exception.Message
Gute Logs sind Gold wert. Wenn man eigene Meldungen mit den detaillierten Fehlermeldungen von PowerShell kombiniert, wird schnell klar, was schiefgelaufen ist:
catch {
Write-Output „Fehler abgefangen: $($_.Exception.Message)“
}
oolesche Überprüfung mit $? und Exit-Code mit $LastExitCode
Mit $? lässt sich überprüfen, ob der letzte Befehl erfolgreich war. Es gibt True bei Erfolg und False bei einem Fehler zurück:
if ($?) {
Write-Output „Operation war erfolgreich.“
} else {
Write-Output „Operation ist fehlgeschlagen.“
}
Für genauere Statusprüfungen liefert $LastExitCode den Exit-Code des zuletzt ausgeführten nativen Programms:
ping 127.0.0.1
Write-Output $LastExitCode # Gibt 0 zurück
ping 256.256.256.256
Write-Output $LastExitCode # Gibt 1 zurück
Globale Fehlerunterdrückung mit $ErrorActionPreference
Durch das Setzen von $ErrorActionPreference = ‚SilentlyContinue‘ kann man globale Fehlermeldungen unterdrücken, um die Logs übersichtlicher zu halten:
$ErrorActionPreference = ‚SilentlyContinue‘
⚠️ Vorsicht: Das kann jedoch auch kritische Fehler verschleiern – also nur gezielt einsetzen!
Fazit
Nutze strukturierte try-catch-Blöcke, aussagekräftige Logs und eine saubere Exit-Code-Behandlung – so wird dein Scripting-Alltag deutlich entspannter!