在 PowerShell 中,foreach
和%
是 的默认别名ForEach-Object
。但是,该命令的行为似乎根据调用方式而有所不同。
foreach
特别是,除非我专门使用别名,否则如果不从管道输入命令,我很难让命令工作。
是我做错了什么吗,还是因为某种原因而设计的?
答案1
foreach 语句和 Foreach-Object Cmdlet不是一回事。
首先:
对于 Foreach-Object 来说,语句主体在生成每个对象后立即执行。在 foreach 语句中,在循环主体开始执行之前收集所有对象。这有两个含义
性能和语法也存在差异。
$i = @(1..3) | ForEach-Object {Write-Host $_}
在 Foreach-Object 中工作。