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

PowerShell
$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.

PowerShell
} 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.

PowerShell
try {
    $file = New-Item -Path "C:\temp\lock" -ItemType File
    # ... Arbeitsschritte ...
} finally {
    Remove-Item "C:\temp\lock" -ErrorAction SilentlyContinue
    Write-Output "Aufräumarbeiten abgeschlossen."
}