PowerShell: Skriptblöcke – Part 18
4.5 Skriptblöcke
Skriptblöcke sind bereits öfter in diesem Dokument verwendet oder erwähnt worden. Im Grunde ist das ein Stück Code, eingeschlossen in geschweifte Klammern. Sie können nicht nur in CMDLets, Funktionen und Sprachelementen verwendet werden, sondern können auch direkt ausgeführt oder als Argument übergeben werden. Darüber hinaus können Skriptblöcke als Funktionen, Filter (siehe Kapitel 4.6) und CMDLets verwendet werden. Letztlich können Skriptblöcke auch zur Funktionsdefinition zur Laufzeit verwendet werden, was allerdings nicht Bestandteil dieses Dokuments wird. Ein Skriptblock hat folgende allgemeine Syntax:
{ Anfang des Skriptblocks Param Param Schlüsselwort ( <ParameterList> Parameterliste ) Begin Begin Schlüsselwort { <StatementList> Anweisungsblock } Process Process Schlüsselwort { <StatementList> } End End Schlüsselwort } } Ende des Skriptblocks
Wenn der Param Statement nicht verwendet wird, werden Argumente an den Skriptblock über die Variable $Args übergeben. Innerhalb der Skriptblockgrenzen können auch die Schlüsselworte Begin, Process und End verwendet werden, analog wie es bei den Funktionen ist. In diesem Fall kann das Skriptblock wie ein CMDLet arbeiten, d.h. die zu verarbeitenden Objekte über die Pipeline empfangen. Dann wird auch automatisch die Laufvariable $_ erzeugt, welche im gesamten Process-Block des Skriptblocks gültig ist und jeweils ein über die Pipeline übergebenes Objekt speichert:
1
2
|
1. 1..10 | & {Begin {$P=1} Process{$P=$P * $_} End {$P}} 3628800 |
Das Beispiel oben berechnet die Fakultät von 10. Er zeigt auch die Methode, wie ein Skriptblock ausgeführt werden kann, nämlich mit Hilfe des Call-Operators. Ein Aufruf über einen Namen kann nicht funktonieren, da die Skriptblöcke keine Namen tragen (sonst wären sie fast Funktionen).