2016-06-29 2 views
0

이 하나 Powershell: how to invoke a second script with arguments from a scriptPowerShell 스크립트

처럼 서로 인수 한 PS 스크립트를 호출하는 방법에 대한 몇 가지 질문은 이미하지만 난 여러으로 첫 번째 스크립트가 경우에 붙어 위치 매개 변수. testpars.ps1

#$arglist=(some call to database to return argument_string) 

$arglist="first_argument second_argument third_argument" 

$cmd=".\testpars.ps1" 

& $cmd $arglist 

$의 아글리스트 변수를 호출 testpar2.ps1

는 데이터베이스에서 문자열로 채워 져야합니다. 이 문자열에는 testpar.ps1에 대한 인수가 포함되어 있습니다.

testpars.ps1는

echo argument1 is $args[0] 
echo argument2 is $args[1] 
echo arugment3 is $args[3] 

# some_command_call $arg[0] $arg[1] $arg[2] 

처럼이 인수가 일부 명령에 대한 경로 그들을 좋아, 어떤 방법으로 testpars.ps1 사용해야 보인다. 내가 testpars2.ps1 실행할 때

는하지만 난 그것이 하나 개의 인수가 아닌 그 목록이라고 생각

argument1 is first_argument second_argument third argument 
argument2 is 
arugment3 is 

을 얻었다.

+0

'에코 arugment3은 $입니다 인수 [3]'하셨습니까'$ 인수 [2]'? –

답변

1

위에서 볼 수 있듯이 함수에 문자열을 전달하면 PowerShell에서 그 값을 단일 값으로 처리합니다. 이는 CMD에서 문자열을 계속 인용하거나 인용 부호를 사용하지 않아야하는 문제를 피하기 때문에 일반적으로 좋습니다. 별도의 값을 얻으려면 split() 문자열을 배열로 가져와야합니다.

$arglistArray = $arglist.split() 

이제 세 개의 문자열 배열이 있지만 여전히 하나의 매개 변수로 전달됩니다. PowerShell은 splatting이라는 개념을 사용하여 값 배열을 여러 인수로 전달합니다. 스플 랫팅을 사용하려면 $을 인수 목록에서 @으로 바꿉니다.

스플래에 대한 자세한 내용은
& $cmd @arglistArray 

입력 Get-Help about_Splatting