我还没有太多的PowerShell经验,我正在尝试自学。
我正在尝试为更大的项目提供一些概念代码证明。这里的主要目标是使用函数动态创建并向数组添加元素。
这是我的代码:
$testArray = @()
function addToArray($Item1)
{
$testArray += $Item1
"###"
}
$tempArray = "123", "321", "453"
$foldertest = "testFolder"
foreach($item in $tempArray)
{
addToArray $item
}
"###"
每次函数完成时,数组都变为空。 请记住,我的大部分编程经验都来自Java,PHP,一些C和C ++,仅举几例,如果我在PHP中这样做(当然要调整语言语法),这本来可以正常工作。
答案 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中的任何操作。净