8

編集:この問題が発生している完全な実装ではなく、ここのコードを単純なテスト ケースに変更しました。

ある Powershell スクリプトを別のスクリプトから呼び出そうとしていますが、期待どおりに動作しません。私が理解しているように、「&」演算子は配列を個別のパラメーターに展開することになっています。それは私には起こっていません。

発信者.ps1

$scriptfile = ".\callee.ps1"
$scriptargs = @(
    "a",
    "b",
    "c"
)

& $scriptfile $scriptargs

呼び出し先.ps1

Param (
    [string]$one,
    [string]$two,
    [string]$three
)

"Parameter one:   $one"
"Parameter two:   $two"
"Parameter three: $three"

実行.\caller.ps1すると、次の出力が得られます。

Parameter one:   a b c
Parameter two:
Parameter three:

私が経験している問題は $scriptargs、配列が展開されておらず、むしろパラメーターとして渡されていることだと思います。PowerShell 2 を使用しています。

引数の配列で callee.ps1 を実行するように caller.ps1 を取得するにはどうすればよいですか?

4

3 に答える 3

1

Invoke-Expression コマンドレットを使用します。

Invoke-Expression ".\callee.ps1 $scriptargs"

結果として、次のようになります。

PS > Invoke-Expression ".\callee.ps1 $scriptargs"
Parameter one:   a
Parameter two:   b
Parameter three: c
PS >
于 2013-10-25T04:42:57.647 に答える