我想将逗号分隔的值列表传递到脚本中作为单个开关的一部分。
这是该计划。
param(
[string]$foo
)
Write-Host "[$foo]"
以下是用法示例
PS> .\inputTest.ps1 -foo one,two,three
我希望此程序的输出为[one,two,three]
,但它会返回[one two three]
。这是一个问题,因为我想使用逗号来区分值。
为什么powershell会删除逗号,为了保留逗号,我需要更改哪些内容?
答案 0 :(得分:30)
逗号是powershell中的一个特殊符号,用于表示数组分隔符。
只需将参数放在引号中:
inputTest.ps1 -foo "one, two, three"
或者你可以引用'逗号:
inputTest.ps1 -foo one`,two`,three
答案 1 :(得分:7)
以下选择可用
所有参数的引用(')
inputTest.ps1 -foo 'one,two,three'
每个逗号之前的Powershell转义字符(重音符号(`))
inputTest.ps1 -foo one`,two`,three
双引号不会改变任何内容! 单引号消除了扩张 逃脱角色(重音符号)消除了下一个角色的扩展
答案 2 :(得分:3)
将它括在引号中,以便将其解释为一个变量,而不是以逗号分隔的三个列表:
PS> 。\ inputTest.ps1 -foo“一,二,三”
答案 3 :(得分:2)
如果要从批处理文件传递参数,则将params包含在内,如下所示 """参数1,参数2,参数3,Param4"""