- Unterschiede zwischen beendenden und nicht beendenden Fehlern in Powershell
- Erweiterte Verwendung von Try/Catch/Finally und Variablen wie $Error und $ErrorActionPreference
- So steuern und passen Sie Fehlermeldungen für eine bessere Diagnose an
- Abfangen bestimmter Ausnahmen mithilfe von Typen und Write-Error

PowerShell ist eines der leistungsstärksten und vielseitigsten Werkzeuge zur Automatisierung von Aufgaben in Windows- Umgebungen . Wie jede Skriptsprache ist sie jedoch nicht fehlerfrei . Um robuste, übersichtliche und leicht zu debuggende Skripte zu erstellen, ist es unerlässlich zu verstehen, wie diese Fehler gemeldet, verwaltet und behandelt werden.
In diesem Artikel tauchen wir tief in die Welt der Fehler und Ausnahmen in PowerShell ein . Sie lernen nicht nur, verschiedene Fehlertypen korrekt zu identifizieren, sondern auch, effektiv mit Strukturen wie Try/Catch/Finally zu arbeiten , wichtige Variablen wie $Error oder $ErrorActionPreference zu verwenden und fortgeschrittene Techniken wie das Auslösen und Abfangen von Ausnahmen bestimmter Typen zu beherrschen.
PowerShell-Fehler: Schlüsselkonzepte
Bei der Verwendung von PowerShell gehören Fehler zum alltäglichen Skriptentwicklungsprozess. Ein Fehler ist im Wesentlichen jede unerwartete Situation, die während der Codeausführung auftritt. Allerdings sind nicht alle Fehler gleich, und sie werden auch nicht auf dieselbe Weise behandelt.
Wir können Fehler in zwei Haupttypen einteilen : terminierende Fehler und nicht - terminierende Fehler.
- Beendigungsfehler: sind kritische Fehler, die sofort anhalten die Ausführung des Skripts oder Cmdlets. Diese Fehler können durch Strukturen erfasst werden
try/catch. - Nicht schwerwiegende Fehler: Stoppen Sie das Skript nicht. PowerShell meldet sie einfach in Rot, speichert sie in
$Errorund fährt mit der Ausführung des restlichen Codes fort.
Wenn Sie beispielsweise versuchen, auf eine nicht vorhandene Datei zuzugreifen, meldet PowerShell in der Regel einen Fehler, setzt die Verarbeitung aber fort, sofern Sie nichts anderes angeben. Weitere Informationen zur erweiterten Fehlerbehandlung finden Sie in unserem Artikel zur Fehlerbehandlung in PowerShell.
Die Variable $Error und ihre Verwendung
PowerShell speichert einen Fehlerverlauf in der automatischen Variable $Error, das als Liste fungiert, in der alle während der Sitzung aufgetretenen Fehler gespeichert werden.
Einige Schlüssel zu dieser Variable:
$ErrorEs ist immer der letzte Fehler.- Enthält Objekte vom Typ ErrorRecord, nicht nur Textnachrichten.
- Maximal 256 Fehler werden standardmäßig gespeichert, konfigurierbar durch
$MaximumErrorCount.
Anwendungsbeispiel:
# Ver el último error
$Error
# Limpiar la lista de errores
$Error.Clear()
Beachten Sie, dass es sich um eine globale Variable handelt, in der Fehler der gesamten Sitzung gespeichert werden, nicht nur die Ihres Skripts. Daher ist es ratsam, sich nicht zu sehr darauf zu verlassen oder sie zu löschen, wenn Sie mit neuen Datensätzen arbeiten.
Sie können auch verwenden Fehlervariable als Alternative, die Fehler in bestimmten Variablen für jedes Cmdlet erfasst, ohne die globale $Error.
Parameter und Einstellungen für die Fehlerbehandlung
PowerShell bietet mehrere Möglichkeiten, das Fehlerverhalten festzulegen . Die beiden wichtigsten sind:
- Parameter
-ErrorAction: Sie können es beim Aufrufen eines Cmdlets verwenden, um zu entscheiden, wie im Fehlerfall vorgegangen werden soll. - Die globale Variable
$ErrorActionPreference: Legt die allgemeine Fehlerrichtlinie für die gesamte Umgebung oder das gesamte Skript fest.
Die Werte, die Sie verwenden können, sind:
- Fortfahren (Standard): Zeigt den Fehler an und setzt die Ausführung fort.
- LautlosWeiter: Der Fehler wird nicht angezeigt, sondern gespeichert in
$Error. - Stoppen: Behandeln Sie Fehler als schwerwiegend und Stoppen Sie das Skript, sodass sie mit
try/catch. - Kontakt: Fragen Sie den Benutzer, was zu tun ist.
- Ignore (seit PowerShell 3.0): Ignoriert den Fehler vollständig und speichert und zeigt ihn nicht an.
Praktisches Beispiel:
$ErrorActionPreference = "Stop" # Todos los errores serán tratados como fatales
Get-ChildItem "C:\RutaInexistente" -ErrorAction SilentlyContinue
Dies bietet uns eine enorme Flexibilität bei der Entscheidung, welche Fehlertypen eine Unterbrechung rechtfertigen und welche nicht . Weitere Informationen zur Fehlerbehandlung in Skripten finden Sie in unserem Leitfaden zum Ausführen von Skripten in PowerShell.
Verwenden von Try, Catch und Finally
Ab PowerShell 2.0 können wir try/catch/finally-Blöcke verwenden, um Fehler strukturiert abzufangen.
Die Syntax lautet wie folgt:
Try {
# Código que podría fallar
}
Catch {
# Código para manejar esa excepción
}
Catch {
# Código para manejar errores genéricos
}
Finally {
# Código que siempre se ejecuta al final, falle o no
}
Der Try-Block führt Code aus, der potenziell einen Fehler erzeugen kann. Tritt ein schwerwiegender (abbrechender) Fehler auf, springt der Code zum entsprechenden Catch-Block. Wird kein Ausnahmetyp angegeben, wird jeder Fehler abgefangen.
Der Finally-Block ist optional, aber nützlich, wenn Sie Ressourcen freigeben, Verbindungen schließen oder aufräumen müssen.
Echtes Beispiel:
Try {
Get-Content "C:\ArchivoInexistente.txt" -ErrorAction Stop
}
Catch {
Write-Error "No se pudo abrir el archivo: $($_.Exception.Message)"
}
Finally {
Write-Output "Finalizado"
}
Innerhalb des Catch können Sie automatische Variablen verwenden $_ o $PSItem um Details zum Fehler zu erhalten, wie etwa seine Nachricht, Typ, Stacktrace usw. Wenn Sie mehr darüber erfahren möchten, wie Sie Skripte verbessern und bestimmte Ausnahmen behandeln können, lesen Sie unseren Artikel über Fehlerbehebungen in Windows 10.
...
Der korrekte Umgang mit Fehlern in PowerShell ist eine Schlüsselkompetenz für die Erstellung professioneller Skripte und verhindert, dass kritische Aufgaben durch kleinere Probleme unterbrochen werden. Die Beherrschung von Strukturen wie Try/Catch/Finally, das Verständnis der von PowerShell bereitgestellten automatischen Variablen und der Umgang mit typisierten Ausnahmen sind grundlegende Schritte zur Verbesserung der Codequalität.
Darüber hinaus sind Tools wie Schreibfehler, kombiniert mit Parametern wie -ErrorAction, geben uns die vollständige Kontrolle darüber, wann und wie Fehler angezeigt werden sollen, sodass wir sie im Detail anpassen und zu einer besseren Erfahrung für diejenigen beitragen können, die unsere Skripte ausführen.
Leidenschaftlicher Autor über die Welt der Bytes und der Technologie im Allgemeinen. Ich liebe es, mein Wissen durch Schreiben zu teilen, und genau das werde ich in diesem Blog tun und Ihnen die interessantesten Dinge über Gadgets, Software, Hardware, technologische Trends und mehr zeigen. Mein Ziel ist es, Ihnen dabei zu helfen, sich auf einfache und unterhaltsame Weise in der digitalen Welt zurechtzufinden.