So verwenden Sie Try-Catch in PowerShell

So verwenden Sie Try-Catch in PowerShell
Fehler sind verwirrend und stressig für alle Computerbenutzer; Sie sind häufig eine Herausforderung zu lesen, und Sie fragen sich, wo das Drehbuch schief gelaufen ist. Es ist auch möglich, dass ein Skript, das einmal ausgeführt wird, nicht wieder ausgeführt wird. Es kann ein Problem geben, das auftritt, wenn Sie es am wenigsten erwarten. Deshalb sollten Sie einbeziehen Fehlerbehandlung in jedem PowerShell -Skript du schreibst.

PowerShell hat einige hervorragende Optionen für den Umgang mit Fehlern. Selbst im einfachsten Skript kann es Fehler verwalten und gleichzeitig sicherstellen, dass ein unerwartetes Ereignis keinen Systemabsturz verursacht. Durch die Implementierung des Konzepts der Fehlerbehandlung können Fehler gefiltert und gezeigt werden, um sie zu verstehen, wodurch der Fehlerverwaltungsprozess zusätzliche Logik hinzugefügt wird. Versuchen Sie, Blöcke zu fangen werden verwendet, um die Kündigungsfehler in PowerShell -Skripten zu behandeln oder zu reagieren.

Was ist ein Try-Catch-Block in PowerShell

Wir werden diese Frage in diesem Abschnitt beantworten:

A "versuche ”Block wird verwendet, um einen Teil eines Skripts anzugeben, in dem PowerShell nach Problemen suchen sollte. Der $ Fehler Automatische Variable speichert zuerst den Fehler in sich, wenn der Block Try Block auf einen Fehler auftritt. Danach sucht PowerShell nach einem Fangblock zum Umgang mit dem Fehler. PowerShell sucht die übergeordneten Bereiche nach einem geeigneten Fangblock, wenn die “versuchen”Anweisung hat keinen gepaarten Fangblock. Der "EndlichBlock wird nach dem Fangblock ausgeführt oder wenn kein geeigneter Fangblock gefunden wurde. Der Fehler wird in den Fehlerstream geschrieben, wenn er nicht behandelt werden kann.

A "Catch “Block Enthält Befehle zur Überwachung des Fehlers oder zur Wiederherstellung des erwarteten Flusses des Skripts. Die Arten von Fehlern, die ein Fangblock fangen wird, können angegeben werden. In einer Try -Anweisung sind verschiedene Arten von Fehlern enthalten, und dann werden mehrere Fangblöcke verwendet, um diese Fehler zu behandeln.

A "Endlich" Block wird verwendet, um Ressourcen freizugeben oder freizugeben, die Ihr Skript nicht mehr benötigt.

Syntax des Versuchs und schließlich in PowerShell

Eine Try -Anweisung besteht aus einem Try -Block mit einem oder mehreren "Catch" und "endlich" Blöcken. Sie sollten mit jeder Versuchsanweisung in Ihrem Skript mindestens einen "Fang" oder "endlich" Block haben. Eine in den Klammern eingeschlossene Anweisungsliste folgt dem Schlüsselwort aus Try -Try.

versuchen

Das Skript sendet das Fehlerobjekt vom Try -Block zu seinem gepaarten Fangblock, wenn ein Beendigung Fehler auftritt, während die Anweisungen in der Anweisungsliste ausgeführt werden. Fehlertypen werden in Klammern platziert, und die äußersten Klammern geben die Option des Elements an.

Der Catch -Block hat eine Anweisungsliste und eine optionale Liste für Fehlertypdefinitionen. PowerShell sucht nach dem geeigneten Fangblock, wenn im Try -Block ein Beendigungsfehler auftritt. Wenn der gepaarte Try-Catch-Block gefunden wird, führt das Programm die Catch-Block-Anweisungen aus.

fangen [[] [',' ]*]

Sie können eine oder mehrere Arten von Fehlern im Fangblock angeben. Diese Fehler sind die .Nettoausnahme. Ein Fangblock funktioniert mit Ausnahmen aus dem angegebenen .Netto -Framework -Ausnahmeklasse und andere abgeleitete Klassen.

Wenn ein Fehlertyp in einem Fangblock angegeben ist, liegt es in der Verantwortung desselben Fangblocks, diesen Fehler zu behandeln. Wenn ein Fehlertyp im Catch -Block nicht definiert ist, wird jeder Fehler behandelt, den die Try -Block -Begegnungen begegnen. Eine Versuchsanweisung kann zahlreiche Fangblöcke haben, um verschiedene Fehlersorten zu bewältigen. Das schließlich Schlüsselwort enthält eine Anweisungsliste, die jedes Mal ausgeführt wird, wenn das Skript ausgeführt wird, unabhängig davon.

Endlich

Ausführung eines einzelnen Try-Catch im PowerShell-Skript ausführen

Jetzt werden wir die praktische Implementierung der Versuchs-Catch-Methode überprüfen. Öffnen Sie zunächst Ihre Windows PowerShell Ise und erstellen Sie eine neue Datei:

Schreiben Sie den folgenden Code in diese Datei und speichern Sie dieses PowerShell -Skript mit dem Namen “TestFile2.PS1”; Sie können es so nennen, wie Sie möchten.

Versuchen Sie NonsenSestring
fangen "Es ist ein Fehler aufgetreten."

PowerShell erkennt das „Nicht -String“ nicht als Objekt oder Befehl, sodass die Anweisung Catch nach dem Ausführen des Skripts ausgeführt wird:

Ausführung mehrerer Try-Catch in PowerShell

Eine beliebige Anzahl von Fangblöcken kann mit einer Versuchserklärung verwendet werden. Im folgenden Beispiel haben wir einen Try-Block mit dem Download hinzugefügt “Mydoc.DokumentUnd hat zwei Fangblöcke:

Der erste Fangblock wird sich umgehen System.Io.IoException Und System.Netz.WebException Fehlern. Der Fehlertyp im zweiten Fangblock ist nicht bereitgestellt. Dieser Block ist auch dafür verantwortlich, andere Beendungsfehler zu behandeln.

versuchen
$ wc = New-Object System.Netz.Webclient
$ wc.DownloadFile ("http: // www.Contoso.com/mydoc.doc "," e: \ download \ testfile.doc ")
Die Datei zur Schreib-Host “hat erfolgreich heruntergeladen !”

Fang [System.Netz.WebException], [System.Io.IoException]
"Mydoc kann nicht heruntergeladen werden.DOC von http: // www.Contoso.com."

fangen
"Es ist ein Fehler aufgetreten, der nicht behoben werden konnte."

Speichern Sie den Code und führen Sie ihn aus.

Die Ausgabe erklärt, dass das “Mydoc.DokumentDie Datei wird erfolgreich in die "heruntergeladen"E: \ Download ” Ordner:

Um die Existenz des neu heruntergeladenen “zu überprüfen“Mydoc.Dokument"Datei, wir werden die" verwenden "Get-Childitem" Befehl. Dieser Befehl extrahiert alle untergeordneten Elemente der “E: \ Download" Ordner:

> Get-Childitem "E: \ Download"

PowerShell verwendet die Vererbung, um Fehler zu entsprechen. Ein Fangblock wird im untergegebenen Beispiel verwendet, um eine zu fangen “Befehl nicht gefunden" Fehler:

Fang [System.Management.Automatisierung.CommandnotfoundException]
"Erbte Ausnahme"

Hier haben wir die Ausnahme.

Ausnahmeinformationen in PowerShell extrahieren

Der aktuelle Fehler kann durch erhalten $ _, auch bekannt als $ PSITEM, Innerhalb eines Fangblocks. Das Objekt ist von dem “Errorrecord -Typ,Und es enthält Informationen über den aufgetretenen Fehler.

Versuchen Sie NonsenSestring
fangen
Schreibhost "Ein Fehler ist aufgetreten:"
Schreibhost $ _

Hier hast du es!

Abschluss

Mit Try-Catch-Blöcken von PowerShell können Sie Skriptprobleme behandeln und verschiedene Vorgänge abhängig von den aufgetretenen Fehlern ausführen. Nicht nur die Fehlermeldung kann im Catch -Block angezeigt werden, sondern auch die Logik für den Umgang mit dem Fehler und die Weiterführung des verbleibenden Skripts umfassen weiter.

In diesem Artikel haben wir Ihnen verschiedene Methoden zur Verfügung gestellt Verwenden Sie Try-Catch in PowerShell. Diese Methoden umfassen das Ausführen von Einzelvertretungs-Catch, mehrere Try-Catch-Anweisungen und Extraktion von Ausnahmeinformationen in PowerShell.