Zum Hauptinhalt springen

Fehler ausgeben mit Write-Error und Throw

Wenn Sie in Powershell eine Fehlermeldung ausgeben wollen, haben Sie zwei Möglichkeiten - Write-Error und Throw. 

Write-Error ist im Prinzip gar kein richtiger Fehler. Das Cmdlet schreibt tatsächlich einfach nur eine Ausgabe in den Fehler-Datenstrom, der dann von Powershell als roter Text in der Konsole ausgeben wird. Die Ausgabe von Write-Error kann beim Aufrufen eines Cmdlets mit dem Standard-Parameter -ErrorAction und dem Argument SilentlyContinue unterdrückt werden. Alle Ausgaben von Write-Error werden auch in der Standardvariablen $Error gespeichert.  

Write-Error "Hier ist was schief gelaufen"

Man spricht bei Write-Error auch von einem Nicht-terminierenden Fehler, weil er keine Auswirkungen auf die Code-Ausführung hat. 

Um einen "echten" Fehler auszulösen, der die Code-Ausführung sofort beendet, können Sie Throw verwenden. Hinter dem Throw-Statement geben Sie in den String an, der als Fehlermeldung ausgegeben werden soll.

Throw 'Das ist jetzt aber wirklich mal ein schlimmer Fehler!!!'
> Das ist jetzt aber wirklich mal ein schlimmer Fehler!!! 
> In Zeile:1 Zeichen:1
>    + Throw 'Das ist jetzt aber wirklich mal ein schlimmer Fehler!!!'

Throw löst Terminierende Fehler aus. Wenn Sie terminierende Fehler abfangen und behandeln wollen, können Sie das mit dem Try-Catch-Konstrukt tun.