从函数传递数组

时间:2016-07-27 21:51:49

标签: powershell

我对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

1 个答案:

答案 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

归结为那里的个人偏好。 ;)