PowerShell foreach,第一个表达式运行一次,下一个表达式在循环中运行

时间:2017-04-14 12:21:47

标签: loops powershell foreach

在下面的PowerShell语句中,看起来{}中的第一个表达式运行一次,因为{}中的第二个表达式为每个管道输出运行,为什么?

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

输出: 跑一次!! 环 环 环 环 环

foreach之后的第一个表达式只运行一次的具体原因是什么?

1 个答案:

答案 0 :(得分:0)

您编写它的方式使其像高级函数 BEGIN / PROCESS / END 构造一样运行。像这样:

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!

当您执行需要多个步骤处理的特定事项时,您希望这样做:

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