THEMA: PowerShell Best Practices für Intune: Fehlerbehandlung
FOKUS: Industrial Precision Design
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!
Academy
Weiterlernen in der Kaffeeundcode Academy
Wenn du diese Themen systematisch vertiefen willst, schau dir den ersten Academy-Kurs zur PSADT-Softwarepaketierung an. Im Fokus stehen .msi, .exe, Silent Switches, Detection, Logs und ein belastbarer Troubleshooting-Workflow.
Diskussion starten
Fragen, Ergänzungen und eigene Erfahrungen sind hier willkommen.