2011-08-22 4 views
46

어떤 이유로 나는 scriptblock에 매개 변수로 문자열 배열을 전달할 수없는 것처럼 보입니다. 여기서 내가 뭘 잘못하고 있니? 다른 스크립트에서 호출다른 스크립트에 매개 변수로 배열을 전달하는 방법은 무엇입니까?

내 스크립트를

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

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

내가

[email protected]("111","222") 
start-job -filepath myscript.ps1 -arg $myarr 

으로 다른 스크립트에서 호출은 배열의 첫 번째 항목을 가지고 - "111"

답변

66

을 다음과 같이 시도해보십시오.

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

-ArgumentList은 인수 목록/배열을 사용합니다. 따라서 -arg $myarr을 주면 마치 배열의 요소를 인수로 전달하는 것과 같습니다. 따라서 PowerShell을 배열로 사용하는 단일 인수로 처리해야합니다.

+0

예, 작동합니다. 이유를 설명해 주시겠습니까? :) 내가 그것을 쉼표() 이해 실제로 그것을 두 개의 하위 배열을 가진 배열, 오른쪽 의미합니까? – mishkin

+7

@Mishkin - 설명은 ArgumentList가 인수 목록/배열을 취하는 것입니다. 따라서'-arg $ myarr'을 주면 배열의 원소를 인수로 전달하는 것과 같습니다. 따라서 powershell을 배열로 사용하는 단일 인수로 취급해야합니다. – manojlds

+0

어떻게 배열과 다른 변수를 전달하겠습니까? -arg (, $ myarr, $ singleValue). 예를 들어, $ singleValue = "x" – eHaze

관련 문제