Wie man PowerShell-Fehler unterdrückt
- Einführung in die Fehleraktion in PowerShell
-
Verwendung des Parameters
-ErrorAction
in PowerShell - Festlegen von Fehleraktionspräferenzen in PowerShell
-
Verwendung der
Try-Catch
-Anweisung in PowerShell - Fazit

Dieser Artikel taucht ein in die komplexe Welt der PowerShell-Fehlerbehandlung und untersucht verschiedene Methoden wie den Parameter -ErrorAction
, das Festlegen von Fehleraktionspräferenzen und die Verwendung der Try-Catch
-Anweisung. Jede dieser Methoden dient einem einzigartigen Zweck, von der stillen Fortsetzung der Skriptausführung trotz Fehler bis hin zur Implementierung ausgeklügelter Fehlerbehandlungsmechanismen.
Diese detaillierte Erkundung soll sowohl Anfänger als auch erfahrene Skripter mit dem Wissen ausstatten, um informierte Entscheidungen über die Fehlerbehandlung in ihren PowerShell-Skripten zu treffen, damit sie unerwartete Situationen effektiv managen und die Integrität des Skripts wahren können.
Einführung in die Fehleraktion in PowerShell
Obwohl es mühelos ist, Windows PowerShell-Fehler zu unterdrücken, ist es nicht immer die beste Option (obwohl es sein kann). Wenn wir PowerShell leichtfertig anweisen, Fehler zu verbergen, kann dies dazu führen, dass sich unser Skript unberechenbar verhält.
Das Unterdrücken von Fehlermeldungen macht auch die Fehlersuche und Informationssammlung viel komplizierter. Seien Sie also vorsichtig und gehen Sie mit den folgenden Snippets, die Sie in diesem Artikel sehen werden, sorgsam um.
Verwendung des Parameters -ErrorAction
in PowerShell
Der Parameter -ErrorAction
in PowerShell ist dafür ausgelegt, zu bestimmen, wie ein Cmdlet auf Laufzeitfehler reagiert. Standardmäßig zeigt PowerShell Fehler in der Konsole an und setzt die Ausführung fort.
In bestimmten Szenarien möchten Sie dieses Verhalten jedoch möglicherweise ändern – zum Beispiel, um Fehlermeldungen zu unterdrücken oder die Ausführung zu stoppen, wenn ein Fehler auftritt. Hierbei wird -ErrorAction
entscheidend.
Befehl:
Get-Service 'svc_not_existing' -ErrorAction SilentlyContinue
Write-Host "This line will execute regardless of the above command's result."
In unserem Skript versuchen wir, einen Dienst mit dem Namen 'svc_not_existing'
abzurufen, einen Dienst, der vermutlich nicht existiert. Durch die Anwendung von -ErrorAction SilentlyContinue
instruieren wir PowerShell, ohne Unterbrechung fortzufahren und die Anzeige einer Fehlermeldung zu vermeiden, sollte es nicht gelingen, den Dienst zu finden.
Daraufhin wechselt unser Skript nahtlos zum Befehl Write-Host
. Dieser Befehl gibt eine bestimmte Nachricht in der Konsole aus.
Ausgabe:
Festlegen von Fehleraktionspräferenzen in PowerShell
Wenn wir ein Skript benötigen, das sich auf bestimmte Weise verhält (wie das Unterdrücken von Fehlern), sollten wir in Betracht ziehen, einige Präferenzvariablen einzurichten. Präferenzvariablen fungieren als Konfigurationseinstellungen für PowerShell.
Wir könnten eine Präferenzvariable verwenden, um die Anzahl der Verlaufselemente zu steuern, die PowerShell speichert, oder PowerShell zu zwingen, den Benutzer vor bestimmten Aktionen zu fragen.
Hier ist zum Beispiel, wie Sie eine Präferenzvariable verwenden können, um den Parameter -ErrorAction
für die gesamte Sitzung auf SilentlyContinue
zu setzen.
Befehl:
$ErrorActionPreference = 'SilentlyContinue'
Get-Service 'nonexistent_service'
Write-Host "This message is displayed even if the previous command fails."
In unserem Skript beginnen wir damit, $ErrorActionPreference
auf 'SilentlyContinue'
zu setzen. Diese Maßnahme sorgt dafür, dass die Einstellung auf alle folgenden Befehle innerhalb unseres Skripts angewendet wird.
Infolgedessen werden alle Fehler, die normalerweise auftreten würden, effektiv unterdrückt.
Als Nächstes verwenden wir das Cmdlet Get-Service
, um zu versuchen, einen nicht vorhandenen Dienst abzurufen. Unter normalen Umständen würde dies einen Fehler auslösen. Dank unserer vorherigen Einstellung von $ErrorActionPreference
bleibt jedoch jeder Fehler, der generiert worden wäre, unsichtbar und unauffällig.
Daraufhin bewegt sich unser Skript elegant zum Befehl Write-Host
. Dieser Befehl ist dafür verantwortlich, eine Nachricht in der Konsole anzuzeigen.
Ausgabe:
Es gibt viele andere Fehleraktionen, die wir für den Schalterparameter ErrorAction
angeben können.
Continue
: PowerShell zeigt die Fehlermeldung an, aber das Skript wird weiter ausgeführt.Ignore
: PowerShell produziert keine Fehlermeldung, schreibt keine Fehlerausgabe an den Host und setzt die Ausführung fort.Stop
: PowerShell zeigt die Fehlermeldung an und stoppt die Ausführung des Skripts.Inquire
: PowerShell zeigt die Fehlermeldung an, fragt aber zuerst nach, ob der Benutzer fortfahren möchte.SilentlyContinue
: PowerShell führt die Codeausführung stillschweigend fort, wenn der Code nicht funktioniert oder nicht beendende Fehler aufweist.Suspend
: PowerShell unterbricht den Workflow des Skripts.
Verwendung der Try-Catch
-Anweisung in PowerShell
Die Try-Catch
-Anweisung ist ein leistungsstarkes Werkzeug in PowerShell, um Fehler auf kontrollierte und ausgeklügelte Weise zu verwalten und darauf zu reagieren. Sie ermöglicht es Skriptern, einen Codeblock zu try
und alle Ausnahmen (Fehler), die während seiner Ausführung auftreten, zu catch
.
Dieser Ansatz ist vorteilhaft, wenn Sie Fehler elegant behandeln, spezifische Aktionen bei einem Fehler ausführen oder verhindern möchten, dass Fehler Ihr Skript abrupt beenden.
Befehl:
try {
Get-Service 'nonexistent_service'
}
catch {
Write-Host "An error occurred: $_"
}
In diesem Skript kapseln wir zunächst einen potenziell fehleranfälligen Befehl, Get-Service 'nonexistent_service'
, innerhalb eines try
-Blocks ein. Wir versuchen, einen Dienst abzurufen, der wahrscheinlich nicht existiert, was normalerweise zu einem Fehler führen würde.
Anstatt jedoch zuzulassen, dass dieser Fehler das Skript beendet oder eine nicht behandelte Ausnahme anzeigt, fangen wir ihn ab. Im catch
-Block führen wir dann einen Write-Host
-Befehl aus, um eine benutzerdefinierte Fehlermeldung anzuzeigen, einschließlich der Fehlereinzelheiten ($_
repräsentiert das aktuelle Fehlerobjekt).
Ausgabe:
Fazit
Wenn wir unsere Reise durch die verschiedenen Facetten der Fehlerbehandlung in PowerShell abschließen, wird deutlich, dass die Stärke dieser Skriptsprache in ihrer Flexibilität und Tiefe liegt. Von der Einfachheit des Parameters -ErrorAction
bis hin zur nuancierten Kontrolle, die durch Try-Catch
-Anweisungen geboten wird, bietet PowerShell ein reichhaltiges Werkzeugpaket zur Verwaltung von Fehlern in verschiedenen Szenarien.
Diese Werkzeuge zu verstehen und zu wissen, wann man sie anwenden sollte, ist entscheidend für das Schreiben robuster, widerstandsfähiger Skripte. Wir haben erkundet, wie das Unterdrücken von Fehlern sowohl ein Segen als auch ein Risiko sein kann, je nach Kontext, und untersucht, wie man Fehler zur späteren Analyse erfassen kann.
Bis jetzt sollten Sie ein umfassendes Verständnis dieser Methoden haben und gut gerüstet sein, um sie in Ihren Skripting-Bemühungen anzuwenden.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn