2012-08-16 17 views
10

我想将逗号分隔的值列表作为单个开关的一部分传入脚本。Powershell正在从程序自变量中移除逗号

这是程序。

param(
    [string]$foo 
) 

Write-Host "[$foo]" 

下面是使用例子

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

我希望这个程序的输出为“[一,二,三]”,而是它返回“[一二三]” 。这是一个问题,因为我想使用逗号来消除这些值。

为什么powershell删除逗号,以及为了保存它们需要更改哪些内容?

回答

23

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

只要把论点报价:

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

另外,您可以“报价”逗号:

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

谢谢。这是我正在寻找的。 – StaticMethod 2012-08-16 16:43:38

3

其用引号包围,因此将它解释为一个变量,而不是一个逗号三个分隔的列表:

PS> \ inputTest.ps1 -foo “一个,两个,三个”

3

以下选项可供选择

  1. 行情周围的所有参数(')

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

  2. 每个逗号前PowerShell的转义字符(严重口音的(`))

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

双引号围绕参数不会改变任何东西!
单引号消除扩大。
转义字符(严重口音的)消除下一个字符的扩大

1

如果从一个批处理文件传递参数,然后enclse您的PARAMS如下 “”“参数1,参数2,参数3,Param4”“”