Windows PowerShell im Einsatz

Bruce Payette

Windows PowerShell im Einsatz

2007

592 Seiten

Format: PDF, Online Lesen

E-Book: €  39,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446414167

 

Skriptblöcke und Objekte (S. 253-254)

"Habe nun, ach Philosophie, Juristerei und Medizin und leider auch Theologie durchaus studiert mit heißem Bemühn. Da steh ich nun, ich armer Tor! Und bin so klug als wie zuvor."
– Johann Wolfgang Goethe, Faust

Griechische Buchstaben sind cool …
– Zitat von Beavis und Butthead


Das vorangegangene Kapitel 7 hat die Basiselemente der Programmierung mit PowerShell behandelt: Funktionen und Skripte. Im vorliegenden Kapitel 8 begeben wir uns auf das nächsthöhere Niveau und werden über Metaprogrammierung diskutieren. Mit diesem Begriff beschreibt man das Entwickeln von Programmen die wiederum andere Programme schreiben oder manipulieren. Falls Sie noch nicht mit diesem Konzept vertraut sind werden Sie sich fragen, was Sie das überhaupt angeht. In Kapitel 1 sprachen wir über den Entwurf von Klassen und wie schwierig es ist, diese Aufgabe optimal zu bewältigen. In den meisten Umgebungen passiert es, dass der Entwickler einen Fehler macht und der User dann mit dem Resultat irgendwo steckenbleibt. Das gibt es in Power- Shell nicht. Metaprogrammierung erlaubt uns das Eindringen in die Tiefen des Systems. Dadurch können wir die Dinge so für uns arbeiten zu lassen wie wir das für richtig halten. Hier eine Analogie, die das verdeutlicht:

Stellen Sie sich vor Sie kaufen einen versiegelten Computer dessen Gehäuse Sie unter keinen Umständen öffnen dürfen. Sie können damit eine Menge tun – alle vorhandenen Programme laufen lassen und sogar neue Programme installieren. Aber es gibt viele Dinge die Sie damit nicht tun können. Falls der Computer über keine USB-Ports verfügt, können Sie auch keine hinzufügen. Wenn keine Hardware zur Videowiedergabe vorhanden ist, so können Sie das nicht ändern, denn das Gehäuse lässt sich nicht öffnen. Auch wenn die meisten Leute Ihren Computer mit der benötigten Grundausstattung kaufen und niemals neue Hardware hinzufügen, ein Gehäuse das Sie nicht öffnen können erlaubt auch keinerlei Eingriffe bzw. Reparaturen an der vorhandenen Hardware. Traditionelle Programmiersprachen ähneln einem versiegelten Computer, sie haben eine Grundausstattung mit verschiedenen Features und während Sie den Einsatzbereich durch Hinzufügen verschiedener Bibliotheken ausdehnen können, ist es Ihnen nicht möglich, die Kernfunktionalitäten der Sprache zu erweitern. So können Sie zum Beispiel nicht den neuen Typ einer Schleifenanwei- sung hinzufügen. In einer Sprache, die Metaprogrammierung unterstützt, können Sie allerdings solche Aktivitäten unternehmen und z.B. neue Kontrollstrukturen hinzufügen. Auf diese Weise wurden z.B. auch die Where-Object- und Foreach-Object-Commandlets implementiert. Diese benutzen die Features der Metaprogrammierung um neue Sprachelemente hinzuzufügen. Sie können sogar Ihre eigenen Befehlsversionen kreieren. Metaprogrammierung ist eines der Features die eine dynamische Sprache wie PowerShell extrem leistungsfähig machen. Dies schlägt sich in dramatischen Verbesserungen nieder, die sich in vereinfachten Konzepten und elegantem Code ausdrücken. Investieren Sie die Zeit um die Metaprogrammierung mit PowerShell zu erlernen und Sie erhöhen Ihre Produktivität beim Anwenden von PowerShell gewaltig! Nun lasst uns damit beginnen das "Gehäuse" von PowerShell zu knacken.

Wir beginnen mit einem zentralen Feature der PowerShell-Sprache, dem Skriptblock. Diese Diskussion nimmt den ersten Teil des Kapitels in Anspruch und legt das Fundament für den Rest des Kapitels. Mit den Basismaterialien ausgestattet machen wir uns auf den Weg und schauen wie und wo das Skriptblock-Feature in PowerShell angewendet wird. Wir betrachten die Rolle von Skriptblöcken beim Erzeugen benutzerdefinierter Objekte und Typen und wie sie zum Erweitern der PowerShell-Sprache eingesetzt werden können. Wir gehen ein Beispiel durch welches weniger als hundert Zeilen Skriptcode braucht um ein neues "Schlüsselwort" hinzuzufügen, welches das Definieren eigener Klassen erlaubt. Wir behandeln ebenfalls verschiedene Commandlets die diese Objekte benutzen und beenden das Thema mit dem Betrachten einiger Programmiermuster welche die Vorteile von Skriptblocks ausnutzen. Programmiermuster (Programming Pattern) beschreiben allgemeine Vorgehensweisen zur Lösung spezieller Problemklassen. Zunächst aber müssen wir das Wesen der Skriptblöcke verstehen.

8.1 Skriptblock-Grundlagen

In diesem Abschnitt unterhalten wir uns darüber wie man Skriptblöcke erzeugt und verwendet. Zunächst schauen wir, wie Befehle aufgerufen werden, sodass wir auch die Möglichkeiten zum Aufrufen von Skriptblöcken verstehen lernen. Als Nächstes wollen wir die die Syntax für Skriptblock- Literale besprechen und die verschiedenen Typen von Skriptblöcken die Sie erzeugen können. Inbegriffen ist auch die Verwendung von Skriptblöcken als Funktionen, als Filter und als Commandlets. Schließlich betrachten wir noch wie man mit Skriptblöcken neue Funktionen zur Laufzeit definieren kann. Lassen Sie uns nun zum Thema kommen und mit den Definitionen beginnen.

In PowerShell ist der Skriptblock der Schlüssel zur Metaprogrammierung (Programme schreiben, die andere Programme schreiben oder manipulieren). Der Skriptblock ist ein Block mit Skriptcode der zwar als Objektreferenz existiert aber keinen Namen erfordert. Die Implementierungen von Where-Object- und Foreach-Object-Commandlets sind von Skriptblöcken abhängig.

 

© 2009-2024 ciando GmbH