如何在PowerShell中动态地向数组添加元素?

nbysray5  于 2023-04-12  发布在  Shell
关注(0)|答案(5)|浏览(196)

我还没有太多的PowerShell经验,我正在沿着自学。
我正在尝试为一个更大的项目做一些概念验证代码。这里的主要目标是使用函数动态地创建和添加元素到数组中。
下面是我的代码:

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

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

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

记住我的大部分编程经验来自Java,PHP,一些C和C++,仅举几例,如果我在PHP中这样做(当然要调整语言语法),这将工作得很好。

7kjnsjlb

7kjnsjlb1#

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

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

zzlelutf2#

问题在于范围;在addToArray函数中,将该行改为:

$script:testArray += $Item1

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

ghg1uchk

ghg1uchk3#

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

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

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

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

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

wlsrxk51

wlsrxk514#

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

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

r55awzrz5#

如果你想在数组的开头添加一个元素(作为索引0),这可能会起作用,就像PHP上的array_unshift($array,$item):

$tempArray = "123", "321", "453"
$foldertest = "testFolder"
$tempArray = @($foldertest) + $tempArray

这给出:

PS D:\users\user1\temp> $temparray
testFolder
123
321
453

相关问题