我对PowerShell使用数组的行为方式感到非常困惑。在下面的代码中,我在数组中添加了三个条目,当我检查函数时,它确实给了我array.Count
为3,这非常符合预期的行。现在我在代码中的不同位置调用该函数,元素计数从3到6加倍。我肯定在这里做错了。任何人有任何想法/想法?
function ReadAPEnvInfoFrom () {
$pathList = New-Object System.Collections.ArrayList
$pathList.Add("aaa")
$pathList.Add("bbb")
$pathList.Add("ccc")
Write-Host 'The count' $pathList.Count
# returns 3
return $pathList
}
cls
$Array = New-Object System.Collections.ArrayList
$Array = ReadAPEnvInfoFrom
Write-Host 'The count' $Array.Count
# returns 6
答案 0 :(得分:1)
要解释 - 您对Add()
上的ArrayList
方法的每次调用都会在管道上放置索引号。即使它们未明确返回,它们也包含在函数返回的值中。因此,如果您查看$Array
的值,您会得到:
0 1 2 aaa bbb ccc
您可以将这些调用转发给@PetSerAl的[void]
正在评论中进行,或者我个人更喜欢将它们分配给$null
:
$null = $pathList.Add("aaa")
或将输出传递给Out-Null
:
$pathList.Add("aaa") | Out-Null
归结为那里的个人偏好。 ;)