Fehlerbehandlung mit Try/Catch
Das Try/Catch/Finally-Konstrukt ist der Goldstandard für kontrollierte Fehlerbehandlung in PowerShell. Anstatt dass ein Skript bei einem Fehler einfach stoppt, kannst du den Fehler gezielt abfangen und darauf reagieren.
Die Grundstruktur
$ErrorActionPreference = 'Stop'
try {
# Code, der einen Fehler verursachen könnte
Get-Content "C:\Datei.txt"
} catch {
Write-Output "Hoppla, da ging was schief!"
}
Wichtig: Damit Try/Catch greift, muss der Fehler ein "Terminating Error" sein. Setze dazu im Zweifel am Anfang deines Skripts $ErrorActionPreference = 'Stop'.
Details zum Fehler auslesen mit $_
Innerhalb des catch-Blocks zeigt die Variable $_ standardmäßig auf das aktuelle Fehlerobjekt. Du kannst damit genauere Infos ausgeben oder den Fehler für die Fehlersuche (Debugging) nutzen.
} catch {
Write-Output "Fehler-Typ: $($_.Exception.GetType().FullName)"
Write-Output "Nachricht: $($_.Exception.Message)"
}
Aufräumen mit Finally
Der finally-Block wird immer ausgeführt, egal ob ein Fehler aufgetreten ist oder nicht. Dies eignet sich hervorragend für Logging oder Ressourcenfreigaben, die unabhängig vom Erfolg oder Fehlerfall garantiert ausgeführt werden müssen.
try {
$file = New-Item -Path "C:\temp\lock" -ItemType File
# ... Arbeitsschritte ...
} finally {
Remove-Item "C:\temp\lock" -ErrorAction SilentlyContinue
Write-Output "Aufräumarbeiten abgeschlossen."
}