5

配列を PowerShell スクリプトに渡そうとしていますが、常に 1 つの値しか得られません。お尻をグーグルで検索しましたが、何も見つかりません。スクリプトに配列を渡すだけです。これが私のコードです:

param($Location)
($location).count

Foreach ($loc in $Location)
{

$loc

}

これが私が実行している私のコマンドです:

C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -ExecutionPolicy Unrestricted  -File "C:\ParaTestingArray.ps1" -location Sydney,London

出力は次のとおりです。

1
シドニー

私の人生では、配列内の他の値を取得することはできません。使ってみました

param([string[]]$Location)

私が試してみました:

-location "Sydney","London"
-location @(Sydney,London)
-location Sydney London
-location Sydney,London
-location (Sydney,London)

私は何を間違っていますか?

4

3 に答える 3

8

-command代わりにスイッチを使用してください。

このような:

powershell -Command "&{C:\ParaTestingArray.ps1 -Location A,B,C}"

about_powershell から:

Windows PowerShell コマンドを実行する文字列を記述するには、次の形式を使用します。

     "& {<command>}"

引用符は文字列を示し、呼び出し演算子 ( &) はコマンドを実行させます。

于 2013-03-07T06:45:48.137 に答える
1

その結果を再現できません:

$script = @'
param($Location)
($location).count

Foreach ($loc in $Location)
{

$loc

}
'@

$script | sc test.ps1

.\test.ps1 sydney,london

2 シドニー・ロンドン

編集:これは機能します:

$args.count

Foreach ($loc in $args)
{

$loc

}

次のように呼び出されます: powershell.exe -file c:\test.ps1 sydney london

于 2013-03-07T02:56:03.573 に答える
0

Powershell.exe -Command "&{C:\script.ps1 -ParmArray 1,2,3}"

トリックはうまくいきましたが、残念ながらハッキーに感じます。私のpowershellの残りの経験の後、直感に反することは間違いありません。

于 2016-11-07T23:21:01.073 に答える