19

単一のスイッチの一部として、コンマ区切りの値のリストをスクリプトに渡したい。

これがプログラムです。

param(
  [string]$foo
)

Write-Host "[$foo]"

使用例は次のとおりです

PS> .\inputTest.ps1 -foo one,two,three

このプログラムの出力は次のようになると思います[one,two,three]が、代わりに。を返し[one two three]ます。値を削除するためにコンマを使用したいので、これは問題です。

PowerShellがコンマを削除するのはなぜですか?コンマを保持するには何を変更する必要がありますか?

4

4 に答える 4

33

カンマは、配列区切り文字を示すPowerShellの特殊記号です。

引数を引用符で囲んでください。

inputTest.ps1 -foo "one, two, three"

または、コンマを「引用」することもできます。

inputTest.ps1 -foo one`,two`,three
于 2012-08-16T15:35:46.047 に答える
12

以下の選択肢があります

  1. すべての引数を引用符で囲みます(')

    inputTest.ps1 -foo 'one,two,three'

  2. 各コンマの前のPowershellのエスケープ文字(アクサングラーブ( `))

    inputTest.ps1 -foo one`,two`,three

引数を二重引用符で囲むと、何も変わりません。
一重引用符は拡張を排除します。
エスケープ文字(アクサングラーブ)は、次の文字の拡張を排除します

于 2014-07-16T15:06:47.690 に答える
3

3つのコンマ区切りリストではなく、1つの変数として解釈されるように、引用符で囲みます。

PS>。\inputTest.ps1-foo "one、two、three"

于 2012-08-16T15:36:49.403 に答える
3

バッチファイルからパラメータを渡す場合は、次のようにパラメータを含めます "" "Param1、Param2、Param3、Param4" ""

于 2014-10-20T22:12:57.430 に答える