| | 0

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).