Was macht $ErrorActionPreference?

$ErrorActionPreference ist eine globale PowerShell-Variable, die steuert, wie mit nicht-terminierenden Fehlern umgegangen wird.

Viele Cmdlets (wie Get-Item, Get-Content, etc.) werfen standardmäßig nicht-terminierende Fehler, wodurch das Skript weiterläuft. Das ist entscheidend, wenn du Skripte robust schreiben willst, die auf Fehler gezielt reagieren statt blind weiterzulaufen.

Try/Catch erfordert "Stop"

Setzt man $ErrorActionPreference = 'Stop', werden diese Fehler in terminierende Fehler umgewandelt, wodurch sie in einem Try/Catch-Block abgefangen werden können.

PowerShell
$ErrorActionPreference = 'Stop'

try {
    Get-Item "C:\GibtEsNicht.txt"
} catch {
    Write-Output "Fehler abgefangen: $($_.Exception.Message)"
}

Wichtige Werte für die Preference

  • Continue (Standard): Fehler anzeigen und mit dem Skript fortfahren.
  • Stop: Fehler anzeigen und das Skript am Fehlerort sofort abbrechen (wird vom Try/Catch gefangen).
  • SilentlyContinue: Nichts anzeigen und den Fehler ignorieren (Fehler landet aber in $Error).
  • Ignore: Wie SilentlyContinue, aber der Fehler wird auch nicht im $Error-Array gespeichert.
  • Inquire: Bei jedem Fehler nachfragen, ob fortgesetzt werden soll.

Lokale Abweichung mit "-ErrorAction"

Anstatt die globale Variable zu ändern, kannst du das Verhalten bei fast allen Cmdlets für diesen einzelnen Aufruf mit dem Parameter -ErrorAction überschreiben.

PowerShell
Remove-Item "C:\temp\alte_log.txt" -ErrorAction SilentlyContinue

Dies ist ein Best-Practice-Muster, um z.B. aufräumende Cmdlets auszuführen, ohne dass rote Fehlermeldungen Nutzer irritieren, wenn die Datei gar nicht existiert.