Windows PowerShell Grundkurs

Benutzerdefinierte Funktionen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Benutzerdefinierte Funktionen führen in der Windows PowerShell Aufgaben bei Bedarf mehrfach aus. Dieses Video erläutert den Aufbau einer Funktion sowie die Übergabe von Parametern.
06:20

Transkript

In der PowerShell können Sie auch eigene Befehle schreiben, die sogenannten Funktionen. Ihre eigenen Befehle können Sie dann bei Bedarf ausführen, und das, wenn es sein muss, sogar innerhalb der Pipeline. In diesem Video sehen Sie, wie einfache Funktionen geschrieben und aufgerufen werden. Beginnen wir mit diesem Kommando: Get-EventLog -Logname System das heißt wir holen uns hier die Einträge aus dem System-EventLog, allerdings wollen wir nur die Fehler, und auch nicht alle, sondern nur die aus den letzten 24 Stunden. (Get-Date) liefert uns jetzt AddDays (-1) zieht von jetzt 24 Stunden ab. Ich lasse diesen Befehl einmal laufen, und dann sehen wir hier unten die angefragten Fehler. Benötigen wir diese Abfrage häufiger, wollen wir sicher nicht immer das komplette Kommando neu eingeben. Besser wäre es, das Kommando in einen eigenen Befehl, eben in eine Funktion, einzubetten. Und das ist in der PowerShell schnell gemacht. Ich gehe hier eine Zeile drüber und beginne dann mit dem Schlüsselwort "function". Danach kommt ein frei wählbarer Name, allerdings sollte der Name keine Sonderzeichen beinhalten oder gleich lauten wie andere Befehle, ich nehme jetzt hier mal "Get-Error". Und dann geschweifte Klammern, und innerhalb der geschweiften Klammern dann das eigentliche Kommando. Ich führe dann das Script erneut aus, und damit haben wir dann die Funktion definiert, und wenn ich jetzt etwa "Get-Error" aufrufe, dann wird die Funktion ausgeführt und wir bekommen die entsprechenden Fehlermeldungen. Soweit hat es schon einmal geklappt. Jetzt möchte ich meinen Befehl noch erweitern, und zwar um den Parameter "-Logname", mit dem ich beim Aufruf meines eigenen Befehls angeben kann, von welchem Log die Fehler aufgelistet werden sollen. Dazu erweitere ich hier oben den Funktionskopf, und zwar schreibe ich hier in runden Klammern eine Variable. Die Variable muss dann genauso heißen wie der Parameter heißen soll, und wenn ich dann beim Aufruf von "Get-Error" einen Namen mitgebe, dann steht der Name in dieser Variablen und kann dann innerhalb der Funktion ausgewertet werden. Das heißt ich ersetze jetzt hier auch das "System" durch eben diese Variable, durch das "-Logname", und ich führe dann hier das Script erneut aus, und wenn ich jetzt versuche auf "Get-Error" zuzugreifen, dann sehen wir hier, es wird automatisch der Parameter "-LogName" angeboten, und ich kann dann hier beispielsweise eben das "System" oder einen der anderen Namen der EventLogs angeben und bekomme dann aus dem angegebenen EventLog entsprechend die Fehlermeldungen. Da es nur diesen einen Parameter gibt, können wir den Namen des Parameters auch weglassen. Also ich könnte jetzt genauso schreiben: "Get-Error" und dann direkt "System", so wird dann das Argument, nämlich das "System", dann automatisch als Argument des ersten Parameters verwendet, genauso wie es etwa auch bei den Commandlets der Fall wäre. Ich lege jetzt testweise noch eine weitere Funktion an, die macht nicht viel, und die heißt auch nur "fu" und es gibt dann hier bloß eine einfache Ausgabe, nämlich dass die Funktion läuft. Führe ich die Funktion aus, dann sehen wir hier: Wir bekommen die Ausgabe. Diese Funktion führe ich nun innerhalb der Pipeline aus. Und zwar nehme ich hier mal ein Commandlet, das uns Objekte liefert, wie zum Beispiel das "Get-Service", das Pipe-Symbol, und das Ergebnis möchte ich jetzt hier mit der Funktion "fu" verarbeiten. Die Frage ist nun, was die PowerShell macht. Eine Funktion läuft genau einmal, egal wie viele Objekte in der Pipeline vorhanden sind. Das sehen wir auch in der Konsole, wenn ich den Befehl ausführe. Die Ausgabe erscheint nur ein einziges Mal. Innerhalb von Funktionen können wir über die Variable "$Input" auf den Pipeline-Inhalt zugreifen und diesen auswerten. Sehen wir uns dazu ein konkretes Beispiel an. Ich öffne gerade eine neue Registerkarte. Und zwar ist das Ziel eine Funktion, die soll den Namen "sum" tragen, und diese Funktion soll die Gesamtgröße der Dateien ermitteln, die über die Pipeline an die Funktion übergeben werden. Also beispielsweise etwas in der Art, wenn ich sage hier: "dir c:\windows\*.log | sum", dann soll mir das "sum" die Gesamtgröße der hier in der Pipeline enthaltenen Dateien ausgeben. Der Funktionskopf sieht dann wie folgt aus: Wir sagen wieder "function", dann der Funktionsname, das wäre dann "sum", und innerhalb der Funktion benötigen wir zunächst eine Variable, die wir für die Aufsummierung der jeweiligen Einzelgrößen verwenden. Diese Variable nenne ich mal "$s" und initialisiere sie mit 0. Dann nehmen wir den Pipeline-Inhalt, und zwar wie schon gesagt über die Variable "$input", und wir verarbeiten dann aus dieser Variablen jedes Objekt über ein "foreach", und in der "foreach"-live wiederum, da addieren wir zu der bestehenden Variablen "s" die jeweilige Dateigröße. Ja, und als letztes benötigen wir dann noch die Ausgabe der Summe, das heißt ich gebe hier "s" an und wir bekommen dann den Inhalt ausgegeben. Dann probieren wir's mal. Die Funktion ist jetzt definiert und ich führe dann aus, ein "dir c:\windows\*.log | sum" und wir bekommen dann die entsprechende Gesamtgröße raus. Die Funktionen, die wir jetzt angelegt haben, gelten übrigens nur in der aktuellen PowerShell-Sitzung. Wollen wir diese dauerhaft zur Verfügung haben, müssen wir die Funktion in Profilen ablegen. In diesem Video haben wir gesehen, wie einfache Funktionen in der PowerShell erstellt und ausgeführt werden.

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!