Ответ 1
$testArray = [System.Collections.ArrayList]@()
$tempArray = "123", "321", "453"
foreach($item in $tempArray)
{
$arrayID = $testArray.Add($item)
}
У меня пока нет особого опыта работы с PowerShell, и я стараюсь учиться сам, пока иду вперед.
Я пытаюсь сделать некоторые доказательства концепции кода для большого проекта. Основной целью здесь является слишком динамическое создание и добавление элементов в массив с помощью функции.
Вот мой код:
$testArray = @()
function addToArray($Item1)
{
$testArray += $Item1
"###"
}
$tempArray = "123", "321", "453"
$foldertest = "testFolder"
foreach($item in $tempArray)
{
addToArray $item
}
"###"
Каждый раз, когда функция завершает работу, массив становится пустым. Имейте в виду, что большая часть моего опыта программирования происходит от Java, PHP, некоторых C и C++, и это лишь некоторые из них, если бы я делал это в PHP (корректируя синтаксис языка, конечно), это работало бы хорошо.
$testArray = [System.Collections.ArrayList]@()
$tempArray = "123", "321", "453"
foreach($item in $tempArray)
{
$arrayID = $testArray.Add($item)
}
Проблема - одна из областей; внутри вашей функции addToArray измените строку на следующую строку:
$script:testArray += $Item1
... для хранения в переменной массива, которую вы ожидаете.
Вместо повторного создания массива в каждой итерации цикла (что в основном происходит каждый раз, когда вы добавляете к нему), присвойте результат цикла переменной:
$testArray = foreach($item in $tempArray)
{
addToArray $item
}
Если вы собираетесь играть с динамическим количеством предметов, более точным решением может быть использование списка:
$testArray = New-Object System.Collections.Generic.List[System.Object]
$tempArray = "123", "321", "453"
foreach($item in $tempArray)
{
$testArray.Add($item)
}