Powershell正在从程序参数中删除逗号

时间:2012-08-16 15:33:05

标签: powershell

我想将逗号分隔的值列表传递到脚本中作为单个开关的一部分。

这是该计划。

param(
  [string]$foo
)

Write-Host "[$foo]"

以下是用法示例

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

我希望此程序的输出为[one,two,three],但它会返回[one two three]。这是一个问题,因为我想使用逗号来区分值。

为什么powershell会删除逗号,为了保留逗号,我需要更改哪些内容?

4 个答案:

答案 0 :(得分:30)

逗号是powershell中的一个特殊符号,用于表示数组分隔符。

只需将参数放在引号中:

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

或者你可以引用'逗号:

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

答案 1 :(得分:7)

以下选择可用

  1. 所有参数的引用(')

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

  2. 每个逗号之前的Powershell转义字符(重音符号(`))

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

  3. 参数的

    双引号不会改变任何内容! 单引号消除了扩张 逃脱角色(重音符号)消除了下一个角色的扩展

答案 2 :(得分:3)

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

  

PS> 。\ inputTest.ps1 -foo“一,二,三”

答案 3 :(得分:2)

如果要从批处理文件传递参数,则将params包含在内,如下所示 """参数1,参数2,参数3,Param4"""