Zum Inhalt
Kaffeeundcode

PowerShell Best Practices für Intune: Fehlerbehandlung

Fehlerbehandlung in PowerShell-Skripten für Intune: Try-Catch, -ErrorAction, $? und $LastExitCode sinnvoll einsetzen statt Fehler zu ignorieren.

Praxis-Artikel · Überblick

  • Warum Fehlerbehandlung wichtig ist
  • Richtige Fehlerbehandlung
  • Verwendung von Try-Catch-Blöcken
  • oolesche Überprüfung mit $? und Exit-Code mit $LastExitCode
  • Globale Fehlerunterdrückung mit $ErrorActionPreference

ca. 3 Min. Lesezeit

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:

PowerShellKlick markiert alles · Strg+C kopiert
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:

PowerShellKlick markiert alles · Strg+C kopiert
$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!