Fehler und Ausnahmen in PowerShell: Eine vollständige Anleitung zur Behandlung

Letzte Aktualisierung: 09/04/2025
Autor: Holger
  • 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

Ausnahmen im PowerShell-Code

Powershell Es ist eines der leistungsstärksten und vielseitigsten Tools zur Automatisierung von Aufgaben in Umgebungen Windows. Wie jede Skriptsprache hat auch diese Sprache ihre Nachteile. Fehler und Ausnahmen. Um robuste, klare und leicht zu debuggende Skripte erstellen zu können, ist es wichtig zu verstehen, wie diese Fehler gemeldet, verwaltet und behandelt werden.

In diesem Artikel tauchen wir ein in die Welt der Fehler und Ausnahmen in PowerShell. Sie lernen nicht nur, die verschiedenen Fehlerarten richtig zu identifizieren, sondern auch effektiv mit Strukturen wie Try/Catch/Finally arbeiten, verwenden Sie Schlüsselvariablen wie $Fehler o $ErrorActionPreferenceund beherrschen Sie fortgeschrittene Techniken wie das Auslösen und Abfangen von Ausnahmen mit bestimmten Typen.

PowerShell-Fehler: Schlüsselkonzepte

Bei der Verwendung von PowerShell gehören Fehler zur täglichen Routine der Skriptentwicklung. Ein Fehler ist grundsätzlich jeder unerwartete Zustand, der während der Codeausführung auftritt. Allerdings sind nicht alle Fehler gleich und werden auch nicht auf die gleiche Weise behandelt.

Wir können Fehler in zwei Haupttypen einteilen:: Abbruchfehler und Fehler, die den Skript (Fehler ohne Abbruch).

  • 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 $Error und fährt mit der Ausführung des restlichen Codes fort.

Wenn Sie beispielsweise versuchen, auf eine Datei zuzugreifen, die nicht existiert, meldet PowerShell normalerweise den Fehler, aber Weiterverarbeitung, sofern Sie nichts anderes angeben. Weitere Informationen zur erweiterten Fehlerbehandlung finden Sie in unserem Artikel über Fehlerbehandlung in PowerShell.

  So verwenden Sie den Kompatibilitätsmodus in Windows 11, um ältere Programme auszuführen

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:

  • $Error Es 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()

Sie müssen berücksichtigen, dass es sich um eine globale Variable handelt. die Fehler der gesamten Sitzung werden hier gespeichert, nicht nur die aus Ihrem Skript. Daher ist es ratsam, sich nicht zu sehr darauf zu verlassen oder es zu leeren, wenn Sie mit neuen Datensätzen arbeiten möchten.

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, entscheiden, wie sich Fehler verhalten sollen. 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 gibt uns eine enorme Flexibilität bei der Entscheidung welche Art von Fehlern eine Unterbrechung wert sind und welche nicht. Weitere Einzelheiten zur Fehlerbehandlung in Skripten finden Sie in unserem Handbuch zu Ausführen von Skripts in PowerShell.

Verwenden von Try, Catch und Finally

Ab PowerShell 2.0 können wir try/catch/finally-Blöcke um Fehler strukturiert zu erfassen.

  So reparieren Sie beschädigte Videos unter Windows: Vollständige Anleitung und effektive Lösungen

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 möglicherweise einen Fehler erzeugen könnte. Wenn ein fataler (terminierender) Typ auftritt, springen wir in den Catch entsprechend. Wenn kein Ausnahmetyp angegeben ist, wird jeder Fehler abgefangen.

Der Finally-Block Dies ist optional, aber nützlich, wenn Sie Ressourcen freigeben, Verbindungen schließen oder bereinigen 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 richtige Umgang mit Fehlern in PowerShell ist eine der wichtigsten Fähigkeiten zum Erstellen professioneller Skripte. und verhindern Sie, dass eine kritische Aufgabe durch kleinere Probleme gestoppt wird. Das Beherrschen von Strukturen wie Try/Catch/Finally, das Verstehen der automatischen Variablen, die PowerShell bietet, und das Erlernen des Umgangs mit typisierten Ausnahmen sind grundlegende Schritte zur Verbesserung der Qualität unseres Codes.

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.

So behandeln Sie Fehler in Powershell-3
Verwandte Artikel:
So behandeln Sie Fehler in PowerShell effizient