web-dev-qa-db-fra.com

Comment puis-je passer un tableau en tant que paramètre à un autre script?

Pour une raison quelconque, il semble que je ne puisse pas passer un tableau de chaînes en tant que paramètre dans scriptblock. Qu'est-ce que je fais ici mal?

Mon script qui s'appelle d'un autre script:

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

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

Je l'appelle d'un autre script comme

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

Je n'ai que le premier élément du tableau - "111".

53
mishkin

Essayez-le comme ci-dessous:

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

Le -ArgumentList prend une liste/un tableau d'arguments. Alors quand tu donnes -arg $myarr, c'est comme si vous passiez les éléments du tableau comme arguments. Vous devez donc forcer PowerShell à le traiter comme un argument unique qui est un tableau.

70
manojlds