2016-06-29 11 views
0

あり、1つの Powershell: how to invoke a second script with arguments from a scriptPowerShellスクリプト

のような別の引数を指定して1つの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は、この引数は、いくつかのコマンドへのパスそれらに同じように、何らかの形で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] 

のように見えます。私はtestpars2.ps1実行したときに

は、私はそれはそれは一つの引数ではなく、それらのリストであると考えて

argument1 is first_argument second_argument third argument 
argument2 is 
arugment3 is 

を得ました。

+0

'エコーarugment3は$ argsを[3]'は '[2]' $ argsを意味しましたか? –

答えて

1

文字列を関数に渡すと、PowerShellはこれを単一の値として扱います。これは通常、文字列を絶えず引用したり引用したりする必要がないというCMDの問題を回避するため、良いことです。別の値を取得するには、文字列を配列にsplit()する必要があります。

$arglistArray = $arglist.split() 

ここでは3つの文字列の配列がありますが、それでもすべてが1つのパラメータとして渡されます。 PowerShellは、splattingという名前のアイデアを持ち、複数の引数として値の配列を渡します。スプラットを使用するには、$を引数リストの@に置き換えます。スプラッティングの詳細については

& $cmd @arglistArray 

、タイプGet-Help about_Splatting

関連する問題