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

将其括在引号中,以便将其解释为一个变量,而不是逗号分隔的三个列表:

PS> .\inputTest.ps1 -foo "一、二、三"

于 2012-08-16T15:36:49.403 回答
3

如果您要从批处理文件中传递参数,则将您的参数包含在下面“”“Param1,Param2,Param3,Param4”“”

于 2014-10-20T22:12:57.430 回答