如何在PowerShell中动态向阵列添加元素?

时间:2012-11-10 01:36:08

标签: arrays function dynamic powershell

我还没有太多的PowerShell经验,我正在尝试自学。

我正在尝试为更大的项目提供一些概念代码证明。这里的主要目标是使用函数动态创建并向数组添加元素。

这是我的代码:

$testArray = @()
function addToArray($Item1)
{
    $testArray += $Item1
    "###"
}

$tempArray = "123", "321", "453"
$foldertest = "testFolder"

foreach($item in $tempArray)
{
    addToArray $item
}
"###"

每次函数完成时,数组都变为空。 请记住,我的大部分编程经验都来自Java,PHP,一些C和C ++,仅举几例,如果我在PHP中这样做(当然要调整语言语法),这本来可以正常工作。

4 个答案:

答案 0 :(得分:12)

问题是范围之一;在addToArray函数中,将行更改为:

$script:testArray += $Item1

...存储到您期望的数组变量中。

答案 1 :(得分:12)

$testArray = [System.Collections.ArrayList]@()
$tempArray = "123", "321", "453"

foreach($item in $tempArray)
{
    $arrayID = $testArray.Add($item)
}

答案 2 :(得分:0)

不是在每次循环迭代中重新创建数组(基本上每次添加时都会发生这种情况),而是将循环的结果赋给变量:

$testArray = foreach($item in $tempArray)
{
    addToArray $item
}

答案 3 :(得分:0)

如果您要处理动态数量的项目,则更精确的解决方案可能是使用列表:

$testArray = New-Object System.Collections.Generic.List[System.Object]

$tempArray = "123", "321", "453"

foreach($item in $tempArray)
{
    $testArray.Add($item)
}

注意:在这种情况下,您可以从 .Net 获得List的强大功能,因此您可以轻松地使用linq,合并,拆分以及执行与List中的任何操作。净