Skip to the main content.

PowerShell-Erfolgsrezepte – die Profi-Tipps für effektives Scripting

Bahn frei, schneller zum Ziel! Streame Fehler direkt zum Handler

Hier kommt die nächste Strategie zur Fehlerbehandlung, nachdem wir zuvor die Echtzeit und verzögerte Fehlerbehandlung kennen gelernt haben.

Leite Fehler direkt zum passenden Handler

Es gibt zwei Standardstrategien für die Fehlerbehandlung, die bereits in dieser Serie behandelt wurden:

  • Echtzeit-Fehlerbehandlung mit Try/Catch: Wird sofort beim Auftreten des Fehlers aufgerufen, bricht aber das Cmdlet ab, das nach dem Auftreten des Fehlers nicht fortgesetzt werden kann.
  • Verzögerte Fehlerbehandlung mit Fehlervariable: Fehler werden gesammelt und können erst behandelt werden, nachdem ein Cmdlet abgeschlossen wurde. 

Hier ist der dritte Ansatz, der die Vorteile der beiden Standardansätze kombinieren kann: Er behandelt Fehler in Echtzeit, sofort wenn sie auftreten, und er erfordert nicht, dass Cmdlets abbrechen oder ‑ErrorAction Stop verwenden:


Get-ChildItem -Path C:\Windows -Depth 1 -Filter *.log 2>&1 | ForEach-Object { if ($_ -is [System.Management.Automation.ErrorRecord]) { $text = $_ | Convert-ErrorRecord | Out-String Write-Host $text } else { $_ } }

 

Wiedu siehst, verwendet das Cmdlet (in diesem Beispiel Get‑ChildItem) überhaupt keine ‑ErrorAction. Es läuft völlig unbeeinflusst von jeglicher Fehlerbehandlung.

Stattdessen werden alle ausgegebenen Fehler aus Stream #2 in den regulären Ausgabestream #1 umgeleitet und können nun die Pipeline hinunterlaufen. Auf diese Weise können sie in Echtzeit gestreamt werden.

Das Cmdlet ForEach‑Object kann dann die Ausnahmen von Stream #2 von der regulären Ausgabe von Stream #1 trennen und die empfangenen Ausnahmen in Echtzeit behandeln, während das Cmdlet gleichzeitig seine Arbeit ohne Unterbrechung erledigen kann.

 

Good2know

Dein ultimativer PowerShell-Spickzettel

Entfessele das volle Potenzial von PowerShell mit unserem praktischen Poster. Egal, ob frischer Einsteiger oder erfahrener Profi, dieser Spickzettel ist so konzipiert, dass du schnell die wichtigsten und am häufigsten verwendeten Cmdlets findest.

Das Poster ist zum Download und in Papierform erhältlich.

PowerShell Poster 2023

Hol dir hier dein Poster!

 

 

Weiterführende Links 

Zusammenhängende Posts

3 min read

Skriptabbruch verhindern: PowerShell-Fehler clever behandeln

Da $error eine globale Variable ist, solltest du in Erwägung ziehen, eine eigene Protokollierungsvariable für die...

3 min read

Stelle Fehlern eine Falle! Mit der Trap-Anweisung Terminating Errors abfangen

Du bist mit try...catch vertraut? Exceptions kannst du mit Trap-Anweisungen behandeln. Kurz und knackig kommt hier der...

5 min read

Mehr Ordnung in PowerShell: lagere Konfigurationsdaten einfach aus

Verabschiede dich von fest codierten Pfaden und Einstellungen! Vereinfache deine PowerShell-Skripte, indem du...

Über den Autor: