63 votes

Comment passer un tableau comme paramètre à un autre script ?

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

Mon script qui est appelé depuis un autre script :

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

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

Je l'appelle depuis un autre script en tant que

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

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

85voto

manojlds Points 96599

Essayez-le comme ci-dessous :

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

Le site -ArgumentList prend en compte une liste/un tableau d'arguments. Ainsi, lorsque vous donnez -arg $myarr c'est comme si vous passiez les éléments du tableau comme arguments. Vous devez donc forcer PowerShell à le traiter comme un seul argument qui est un tableau.

2voto

mishkin Points 1680

J'ai déjà cherché mais je n'ai pas trouvé la réponse. Je viens de refaire une recherche et j'ai trouvé cet article qui explique comment passer un tableau comme paramètre.

http://powershell.com/cs/forums/t/4169.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X