为什么当调用 foreach 时 ForEach-Object 的行为会有所不同?

为什么当调用 foreach 时 ForEach-Object 的行为会有所不同?

在 PowerShell 中,foreach%是 的默认别名ForEach-Object。但是,该命令的行为似乎根据调用方式而有所不同。

foreach特别是,除非我专门使用别名,否则如果不从管道输入命令,我很难让命令工作。

在此处输入图片描述

是我做错了什么吗,还是因为某种原因而设计的?

答案1

foreach 语句和 Foreach-Object Cmdlet不是一回事。

首先:

对于 Foreach-Object 来说,语句主体在生成每个对象后立即执行。在 foreach 语句中,在循环主体开始执行之前收集所有对象。这有两个含义

性能和语法也存在差异。

$i = @(1..3) | ForEach-Object {Write-Host $_}

在 Foreach-Object 中工作。

相关内容