Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Windows PowerShell Grundkurs

Erweiterte Funktionen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Erweiterte Funktionen bieten zusätzliche Optionen bei der Definition von Parametern sowie der Verarbeitung von Objekten aus der Pipeline. Zusätzlich kann eine Funktion in mehrere Abschnitte aufgeteilt werden.
09:05

Transkript

Haben Sie sich mit dem Konzept von PowerShell-Funktionen bereits auseinander gesetzt und wollen jetzt mehr Einfluss auf die Parameterübergabe und die Verarbeitung von Objekten in der Pipeline haben? Dann sind sie bei "Erweiterten Funktionen" richtig. Sehen wir uns in diesem Video verschiedene zusätzliche Optionen an Funktionen zu definieren und zu strukturieren. beginnen wir mit dieser Funktion zur Berechnung der Mehrwert- steuer eines Betrags. Die Funktion verfügt über zwei Parameter: Den Betrag und den Prozentsatz. Diese Funktion können wir auf unterschiedliche Arten aufrufen. Beispielsweise über "MwSt", ich gebe dann zwei Zahlen an, oder aber ich gebe hier die Parameterbezeichner an, den Betrag und den Satz. Also genau so, wie es auch bei Commandlets möglich wäre. Allerdings können wir die Funktion auch ohne weitere Angabe aufrufen, was jetzt für die Funktionalität nicht besonders sinnvoll ist. Ich könnte theoretisch auch bei der Übergabe nicht nur Zahlen angeben, sondern beliebige andere Objekte, beispielsweise könnte ich hier auch das Ergebnis von "Get-Service" übergeben, das macht natürlich auch keinen großen Sinn, und wir sehen dann hier eine Fehlermeldung, die kommt dann durch die Division, die dann auf Dienstobjekte, wie ich sie hier übergeben habe, natürlich nicht angewandt werden kann. Versuchen wir, die Funktion "MwSt" etwas eleganter zu formulieren. Angenommen, der Anwender dieser Funktion möchte den Prozentsatz nicht immer mit angeben müssen. Wenn er nicht angegeben ist, soll automatisch ein Satz von 19 % gelten. Um einen solchen Standardwert zu erreichen, passen wir einfach die Parameterdefinition an. Und zwar nehme ich hier die Variable "$Satz" und weise der den Wert "19" zu. Diese 19 kommt immer dann zum Tragen, wenn der Anwender für den Parameter "$Satz" kein Argument übergibt. Schauen wir uns das mal an. Ich führe hier zunächst einmal das Skript aus, und dann starte ich hier die Funktion mit dem Betrag von 1000, und dann sehen wir, es werden 19 % berechnet. Wenn ich dagegen für den Satz auch einen Wert angebe, wie die 7, dann werden nur 7 % berechnet. Als nächstes wollen wir sicherstellen, dass der Anwender beim Aufruf der Funktion auch wirklich Zahlen übergibt und nicht beliebige andere Objekte wie beispielsweise die Dienstobjekte. Um das zu erreichen, schreibe ich vor die jeweiligen beiden Parameter in eckigen Klammern den gewünschten Datentyp. Und in meinem Fall hätte ich hier in beiden Fällen gerne ein "double"-Objekt und dann hat das für die Ausführung, wenn ich Zahlen angebe, keine große Auswirkung. Das heißt, ich kann jetzt hier auch natürlich weiterhin Zahlen angeben. Wenn ich aber hier jetzt versuchen würde, wie oben Dienstobjekte anzugeben, dann können diese Dienstobjekte nicht in "double" übersetzt werden und entsprechend bekommen wir dann von der PowerShell eine Fehlermeldung, dass hier das Objekt-Array, nämlich die Dienstobjekte, nicht umgewandelt werden können in einen "double"-Wert. Und wenn wir jetzt beispielsweise sogar die Hilfe aufrufen von unserer Funktion, dann sehen wir in der Definition, dass wir hier für beide Parameter auch einen "double"-Wert anfordern. Und noch eine Erweiterung: Es soll sichergestellt werden, dass der Anwender auch einen Betrag beim Aufruf mitgibt. Der Betrag soll also ein Pflichtparameter werden. Um das zu erreichen, fügen wir eine Ergänzung beim Parameterbetrag ein. Ich mache das so, dass ich jetzt hier nochmal in eckigen Klammern ein Parameter schreibe und dann kann ich sagen, dass das hier ein Mandatory-Parameter sein soll, das heißt ein Pflichtparameter, und wenn ich das dann ausführe, und ich versuche jetzt mal die Funktion aufzurufen ohne irgendeine weitere Angabe, dann sehen wir hier: Die PowerShell erkennt den Pflichtparameter. Sie erkennt, dass wir kein Argument für den Parameter angegeben haben, und deswegen fragt sie jetzt nach. So könnte ich dann hier eben meinen Betrag angeben, oder aber, so wie vorhin natürlich auch, können wir auch den Betrag nach wie vor über den Parameter direkt angeben. Ob mit Angabe des Namens oder ohne spielt dabei immer noch keine Rolle. Da die Parameterdefinition nun etwas unübersichtlich ist, lohnt sich eine etwas andere Schreibweise. Statt der direkten Angabe der Parameter hinter dem Funktionsnamen verwenden wir das Schlüsselwort "param", das speziell für die Parameter- definition gedacht ist. Ich mache das dann so, dass ich hier die runde Klammer ausschneide und dann ins Funktionsinnere gehe. Dort beginne ich mit dem Schlüsselwort "param", setze dann die Definition der Parameter dahinter und schreibe es dann noch ein bisschen anders, damit hier deutlich wird, was denn zusammengehört, nämlich hier die Parameterangabe gehört zum Betrag, und der Satz ist dann separat. Und damit habe ich dann eine etwas bessere Schreibweise und die Funktionalität ist natürlich nach wie vor noch gegeben. Neben solchen Erweiterungen bei der Parameterdefinition können Sie Funktionen bei Bedarf auch in drei Abschnitte aufteilen. Hier ein Beispiel. Wir bauen eine kleine Funktion, die soll "fu" heißen, und die hat drei Bereiche, nämlich einen Bereich "Begin", der macht nichts anderes außer auszugeben, dass wir eben im Beginn sind. Dann haben wir noch einen "Process"-Bereich, da machen wir's dann ganz genau so, es geht hier nur um die Demonstration der Funktionalität. Und dann haben wir hier noch einen "End"-Bereich, und das Besondere bei dieser Aufteilung ist die Ausführung der Funktion innerhalb der Pipeline. Dort ist es nämlich so, dass der "Begin"-Block hier, der wird, egal wie viele Objekte in der Pipeline enthalten sind, genau einmal am Anfang nach dem Funktionsaufruf ausgeführt. Dagegen der "Process"-Block, der wird für jedes Objekt aus der Pipeline separat ausgeführt, und der "End"-Block wiederum einmal am Ende. Das sehen wir beispielsweise, wenn ich jetzt hier etwa ein "Get-Service" nehme, und die Objekte vom "Get-Service" leite ich weiter an diese Funktion, dann sehen wir genau die Vorgehensweise, das heißt wir haben hier zunächst einmal ein "Begin", ein einzelnes "Begin" hier am Anfang, dann für jedes Objekt, das "Get-Service" geliefert hat, eine "Process"-Ausgabe, und am Ende finden wir dann eine einzelne "End"-Ausgabe. Solche erweiterten Funktionen bieten noch viel mehr Optionen, als ich sie jetzt hier angesprochen habe. Um einen Überblick zu bekommen, können Sie folgendes tun: Und zwar gehen Sie in der ISE auf das Menü "Bearbeiten" und sagen dann dort "Ausschnitte starten". Dort finden Sie Funktionsbausteine für verschiedene Strukturen in der PowerShell, beispielsweise hier für Schleifen. Es gibt hier auch einen Baustein für erweiterte Funktionen und ich wähle diesen gerade mal aus. Dann bekommen wir hier in die PowerShell ein etwas aufwändigeres Beispiel, wie denn solche erweiterten Funktionen aufgebaut sein können. Dort sehen wir etwa auch diese drei Abschnitte, aber wir sehen auch bei der Definition der Parameter noch viele weitere Möglichkeiten, beispielsweise wie ich denn sicherstellen kann, dass denn eine Übergabe nur eine maximale Länge hat, oder aber, dass Argumente nur einen von verschiedenen Werten annehmen können. Oder aber, wir sehen hier auch einen längeren Kommentar-Block, und dieser Kommentar-Block, der wird dann auch in der Hilfe der PowerShell mit eingesetzt. Und zwar beispielsweise, ich lasse mal hier die Funktion soweit laufen und sage dann "Get-Help", und die Funktion heißt "Verb-Noun", dann sehen wir all die Angaben, die wir jetzt hier haben und auch die Angaben dann hier beispiels- weise bei der Beschreibung der Parameter, die sehen wir dann auch in der Hilfe-Ausgabe des Befehls, hier jetzt die Kurzform mit der Beschreibung beispielsweise, und wenn ich dann beim "Get-Help" noch den Parameter "-Full" mit anhänge, dann sehen wir beispielsweise auch hier die Beispiele oder auch die Beschreibung der einzelnen Parameter. Diese Angaben, die jetzt hier die Hilfe zu Rate zieht, das sind dann die Angaben, die wir hier etwa in der Funktionsdefinition sehen. In diesem Video habe ich Ihnen verschiedene zusätzliche Möglichkeiten gezeigt, Parameter zu definieren und ihre Funktionen zu strukturieren.

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!