2017-04-14 1 views
0

In der folgenden PowerShell-Anweisung sieht der erste Ausdruck in {} einmal aus, wo der zweite Ausdruck in {} für jede Pipelineausgabe ausgeführt wird ?PowerShell foreach, erster Ausdruck wird einmal ausgeführt und der nächste Ausdruck wird in Schleife ausgeführt

1..5 | foreach{ write-host "Run Once!!" }{ write-host "Loop"} 

Ausgang: Einmal Run !! Schleife Schleife Schleife Schleife Schleife

einen bestimmten Grund, warum der erste Ausdruck nach foreach nur einmal ausgeführt wird?

Antwort

0

Die Art, wie Sie es schreiben, macht es wie erweiterte Funktion ausgeführt BEGINN/PROCESS/END Konstrukt. Wie so:

PS C:\> 1..5 | foreach -Begin{ write-host 'Run Once!!' }-Process { write-host 'Loop'} -End{Write-Host 'Finished!'} 
Run Once!! 
Loop 
Loop 
Loop 
Loop 
Loop 
Finished! 

Sie wollen, dies zu tun, wenn Sie etwas Bestimmtes tun, das erfordert mehrere Schritte Prozess, etwa so:

BEGIN 
{ 
    Connect to something 
} 
    PROCESS 
    { 
    Do number of things 
    } 
END 
{ 
    Disconnect 
} 
Verwandte Themen