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