Du bist mit try...catch vertraut? Exceptions kannst du mit Trap-Anweisungen behandeln. Kurz und knackig kommt hier der nächste Tipp von Aleksandar & Tobias:
Nutze Trap-Anweisungen – so helfen sie dir
Die meisten fortgeschrittenen PowerShell-Nutzer sind mit der Try-Catch Fehlerbehandlung vertraut. Hier ist ein Beispiel:
try
{
Write-Host 'Previous Command'
$result = Get-ChildItem -Path $env:windir -Depth 1 -Filter *.log -ErrorAction Stop
Write-Host 'Next Command'
}
catch
{
$_.CategoryInfo | Select-Object -Property Category, TargetName
}
Für die Verwendung von try...catch gelten einige Einschränkungen:
- Für try...catch muss das Cmdlet die Aufgabe *abbrechen*, um die Exception abzufangen (über -ErrorAction Stop oder wenn Terminating Error ausgegeben wird).
- Jede Exception im Try-Block überspringt die restlichen Befehle in diesem Block. Die zweite Write-Host-Anweisung wird also nicht ausgeführt.
Diese Vorgehensweise kann erwünscht sein, und in diesem Fall ist try...catch die beste Wahl.
Wenn jedoch keine Befehle übersprungen werden sollen, kann stattdessen eine Trap-Anweisung verwendet werden (siehe unten). Und wenn du ein Cmdlet nicht abbrechen, sondern stattdessen Fehler auswerten möchtest, nachdem das Cmdlet abgeschlossen wurde, solltest du unseren nächsten Tipp in dieser Reihe lesen.
Eine Trap-Anweisung ist im Wesentlichen ein Catch-Block ohne einen Try-Block. Der obige Beispielcode kann leicht geändert werden:

Entferne das Schlüsselwort try und die {} Klammern und ersetze catch durch trap, füge continue hinzu und du erhältst:
Write-Host 'Previous Command'
$result = Get-ChildItem -Path $env:windir -Depth 1 -Filter *.log -ErrorAction Stop
Write-Host 'Next Command'
trap
{
$_.CategoryInfo | Select-Object -Property Category, TargetName
continue
}
Es gibt zwei Unterschiede:
- Da eine Trap-Anweisung eine globale Fehlerbehandlung ist, funktioniert sie überall in deinem Skript ohne einen try-Block. Jede Exception wird einzeln behandelt und kein Befehl wird übersprungen. Deshalb wird der zweite Write-Host-Befehl jetzt ausgeführt.
- Da eine Trap-Anweisung den Fehler standardmäßig nicht behandelt, ist eine zusätzliche Continue-Anweisung erforderlich, wenn die Ausnahme behandelt werden soll. Ohne diese Anweisung würde die Exception an den nächsten Caller weitergereicht und schließlich würde eine rote Fehlermeldung auf der Konsole ausgegeben werden (zusätzlich zu dem, was in der Trap-Anweisung passiert).
Dein ultimatives PowerShell Cheat Sheet
Entfalte das volle Potential von PowerShell mit unserem praktischen Poster. Egal ob Anfänger oder erfahrener Profi, dieses Cheat Sheet ist darauf ausgelegt, dein Anlaufpunkt für die wichtigsten und am häufigsten verwendeten Cmdlets zu sein.
Zum Download oder ausgedruckt zum Aufhängen an deiner Wand.

Weiterführende Links
- ScriptRunner ActionPacks helfen beim Scripting weiter
- Wirf einen Blick in's Produkt, hier geht's zur freien Trial Version
- Buche hier eine Demo mit einem unserer ScriptRunner Product Experten