我发现当我编写以下函数时:
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的方法?
最佳答案
试试这个:
function test {
Write-Host ($input | Measure-Object).Count
$input.reset()
Write-Host ($input | Measure-Object).Count
}
reading about
$input
enumerator
关于powershell - PowerShell:$ input功能的值更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13141077/