我发现当我编写以下函数时:
function test {
Write-Host ($input | Measure-Object).Count
Write-Host ($input | Measure-Object).Count
}
带样本输入:
dir | test
它在控制台上写道:
18
0
我认为这是因为 Measure-Object 的第一个管道覆盖了 $input。我知道一种解决方法,我可以创建一个新数组并传递它:
function test {
$inp = @($input)
Write-Host ($inp | Measure-Object).Count
Write-Host ($inp | Measure-Object).Count
}
但是我不喜欢它,因为我正在引入一个新变量。有没有办法在不影响 $input 的情况下通过管道连接到 cmdlet?