Windows PowerShell Grundkurs

Fehler erkennen und behandeln

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die Erstellung einer Fehlerabfrage dient bei automatisch ausgeführten Skripten der Erkennung und anschließenden Behandlung von etwaig auftretenden Fehlern. Hierfür verfügt die Windows PowerShell über entsprechende Variablen.
07:49

Transkript

Bei der Ausführung von Skripten können viele Fehler auftreten. Beispielsweise kann ein Server im Netzwerk nicht erreicht werden, eine Datei ist blockiert, und der Domänencontroller antwortet nicht schnell genug, Im Gegensatz zu der interaktiven Arbeit mit der Powershell bei der Sie im Konsolenfenster Fehler sehen und direkt darauf reagieren können, sieht die Sache bei einem Skript schon anders aus. besonders wenn dieses automatisch zu einem bestimmten Zeitpunkt ausgeführt wird. Deswegen benötigen wir eine Möglichkeit, bei der Ausführung von Skripten Fehler zu erkennen, und dann darauf zu reagieren. In diesem Video sehen wir uns an, wie das geht. Die Powershell verwendet für die Fehlererkennung und Behandlung eine ganze Reihe von Variablen. Sehen wir uns zuerst die Variable §Fragezeichen an. Sie enthält den Wert True, wenn der unmittelbar zuletzt aufgerufene Befehl ohne Fehler durchgeführt wurde. und False, wenn es einen Fehler gab. Provozieren wir einen Fehler, um das nachvollziehen zu können. Ich nehme hier den Befehl Get-Content, mit dem man den Inhalt von Textdateien auslesen kann. Ich gebe hier aber eine Datei an, die es nicht gibt, und entsprechend bekommen wir natürlich einen Fehler. Dann lasse ich mal den Inhalt hier der Variable $Fragezeichen ausgeben. und wir sehen hier den Wert False. Das sagt uns, der Befehl Get-Content konnte nicht erfolgreich durchgeführt werden. Wenn ich dagegen hier einen Befehl ausführe, bei dem es keine Probleme gibt, und mir dann das Fragezeichen anzeigen lasse, dann sehen wir hier ein True. Mit dem Fragezeichen erkennen wir also, ob ein Fehler aufgetreten ist, allerdings nicht welcher. Den Fehler selbst erhalten wir über eine weitere Variable, nämlich über die Variable $error. Diese fungiert als Fehlerhistorie, und enthält sämtliche Fehler, die seit dem Start der Powershell aufgetreten sind. Jeder aufgetretene Fehler ist in der Variable $error als Objekt hinterlegt. den zuletzt aufgetretenen Fehler finden wir am Index Null. Und wenn jetzt hier etwa die Variable $error aufrufe, und dann sage, ich möchte hier den Index Null, dann bekomme ich den zuletzt aufgetretenen Fehler. Eine Fehlerabfrage in einem Skript könnte dann etwa so aussehen: ich nehme hier gerade mal den Skripting-Bereich, wir führen ein Kommando aus, und ich möchte dann im Skript überprüfen, ob das denn geklappt hat, und wenn nicht, das heißt, im Fragezeichen steht dann der Wert False, dann sage ich hier, dass die Datei nicht eingelesen werden konnte. Und dazu schreibe ich noch hier die Variable $error, mit dem Index Null, um auszugeben, warum denn die Datei nicht ausgelesen werden konnte. Ansonsten hat alles geklappt, und ich gebe es entsprechend aus. Dann schauen wir uns mal das Ergebnis an, das heißt, ich führe jetzt diesen Code aus und wir sehen dann hier die Standardfehlermeldung der Powershell, und dann auch unsere Ausgabe mit der entsprechenden Fehlermeldung. Das Fehlerverhalten, also was die Powershell macht, wenn ein Fehler aufgetreten ist, können wir auch einstellen. ebenfalls wieder mit einer Variablen, diesmal mit der Variablen $ErrorActionPreference. Sehen wir uns das auch mal an. Diese Variable enthält standardmäßig hier den Wert Continue. und das heißt nichts anderes, als dass, wenn ein Fehler aufgetreten ist, dann gibt den die Powershell in der Konsole aus, macht dann aber weiter. und das sehen wir beispielsweise auch in einer anderen Konstellation, und zwar wechsele ich mal in das Laufwerk HKLM und führe dort den Befehl dir aus. Und dann sehen wir hier auch das Continue, nämlich die Powershell listet jetzt hier die Schlüssel aus HKEY_LOCAL_MACHINE auf, dann kommt es aber zu einem Fehler, nämlich zu einem Zugriffsfehler, wir sind nicht berechtigt, hier auf den Schlüssel Security zuzugreifen. Die Powershell gibt den Fehler aus, macht dann aber mit den anderen Schlüsseln weiter. Jetzt kann ich die Variable $ErrorActionPreference auf andere Werte setzen, wie zum Beispiel auf den Wert "SilentlyContinue" und mit diesem Wert "SilentlyContinue" bestimme ich, dass wenn ein Fehler aufgetreten ist, dieser in der Konsole nicht dargestellt werden soll, trotzdem soll die Powershell weitermachen. Ich führe wieder den dir-Befehl aus, und es sieht jetzt tatsächlich so aus, als ob kein Fehler aufgetreten ist, wenn ich aber dann in die Variable Fragezeichen schaue, dann sehe ich dort nach wie vor, da steht der Wert False, das heißt, es ist ein Fehler aufgetreten, und in der Variablen $error am Index Null sehen wir auch, was für ein Fehler aufgetreten ist. Jetzt könnte ich hier die Variable $ErrorActionPreference auch noch mit anderen Werten belegen, wie zum Beispiel einem "Stop". Was hat das für eine Auswirkung? Ich führe wieder ein dir aus, wir sehen, der Fehler wird dargestellt, aber die Powershell hört dann auch mit der Ausführung des Befehls an dieser Stelle auf. das heißt, die weiteren Schlüssel in HKEY_LOCAL_MACHINE werden jetzt nicht dargestellt. Und noch eine weitere Möglichkeit, ich nehme auch wieder $ErrorActionPreference und setze diesmal auf den Wert "Inquire" Ich führe das dir aus, und wir sehen jetzt hier, die Powershell sagt uns, es ist ein Fehler aufgetreten, sie sagt uns auch, was für ein Fehler aufgetreten ist, und wir haben jetzt die Möglichkeit zu sagen, ja, mach weiter, oder nein, höre bitte auf an dieser Stelle. Ich setze die Variable $ErrorActionPreference, wieder zurück auf den Standardwert, das heißt, auf das Continue. Ja, um nicht jeden Befehl separat überprüfen zu müssen, lässt die Powershell auch eine abschnittsweise Fehlerüberprüfung zu. Dazu verwenden wir Try/Catch hier ein Beispiel, auch das mache ich mal hier im Skripting-Bereich, ich beginne mit einem try, und alles, was ich jetzt hier in den try-Block schreibe, wird auf Fehler hin überwacht. also beispielsweise kann ich da jetzt Befehle hineinschreiben, hier zum Beispiel nochmal den Befehl der einen Fehler wirft, ich kann ja aber auch mehrere Befehle hineinschreiben, nicht nur einen, und sollte dann in diesem try-Block ein Fehler auftreten, dann wird automatisch der catch-Block ausgeführt, und dort kann ich dann für den try-Block an zentraler Stelle eine Fehlerbehandlung hinterlegen, beispielsweise eine solche, ähnlich wie wir es vorhin auch schon gemacht haben, dass ich den Fehler ausgebe. Allerdings, damit dieses try&catch auch funktioniert, müssen wir die Variable $ErrorActionPreference auf den Wert "Stop" setzen, ansonsten wird der catch-Block nicht ausgeführt. Führe ich jetzt diesen Skriptcode aus, dann sehen wir in der Ausgabe erscheint unsere Fehlerbehandlung. In diesem Video haben wir verschiedene Möglichkeiten gesehen, Fehler zu erkennen und darauf zu reagieren.

Windows PowerShell Grundkurs

Nutzen Sie die Leistungsfähigkeit der Windows PowerShell, lassen Sie sich dazu die Grundlagen zeigen und erledigen Sie künftig effizient Verwaltungs- und Automatisierungsaufgaben.

3 Std. 26 min (45 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:27.08.2014

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!