Как передать массив в качестве параметра другому сценарию? - программирование
Подтвердить что ты не робот

Как передать массив в качестве параметра другому сценарию?

По некоторым причинам, похоже, что я не могу передать массив строк в качестве параметра в скрипт-блок. Что я здесь делаю не так?

Мой скрипт, который вызывается из другого скрипта:

param(
    [parameter(Mandatory=$true)]
    [string[]]$myarr
)

foreach ($elem in $myarr){
    $elem
}

Я называю это из другого скрипта как

 $myarr = @("111", "222")
 start-job -filepath myscript.ps1 -arg $myarr

Я получил только первый элемент в массиве - "111".

4b9b3361

Ответ 1

Попробуйте следующее:

start-job -filepath myscript.ps1 -arg (,$myarr)

-ArgumentList принимает список/массив аргументов. Поэтому, когда вы даете -arg $myarr, вы как бы передаете элементы массива в качестве аргументов. Поэтому вам нужно заставить PowerShell рассматривать его как единственный аргумент, который является массивом.