Как динамически добавлять элементы в массивы в 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 (корректируя синтаксис языка, конечно), это работало бы хорошо.

Ответ 1

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

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

Ответ 2

Проблема - одна из областей; внутри вашей функции addToArray измените строку на следующую строку:

$script:testArray += $Item1

... для хранения в переменной массива, которую вы ожидаете.

Ответ 3

Вместо повторного создания массива в каждой итерации цикла (что в основном происходит каждый раз, когда вы добавляете к нему), присвойте результат цикла переменной:

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

Ответ 4

Если вы собираетесь играть с динамическим количеством предметов, более точным решением может быть использование списка:

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

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

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