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

Powershell正在从程序参数中删除逗号,powershell,Powershell,我想将逗号分隔的值列表作为单个开关的一部分传递到脚本中 这是节目单 param( [string]$foo ) Write-Host "[$foo]" 下面是使用示例 PS> .\inputTest.ps1 -foo one,two,three 我希望这个程序的输出是[1,2,3],但它返回的是[1,2,3]。这是一个问题,因为我想使用逗号来消除这些值 powershell为什么要删除逗号?为了保留它们,我需要做哪些更改?逗号是powershell中的一个特殊符号,表示数组分隔符

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

这是节目单

param(
  [string]$foo
)

Write-Host "[$foo]"
下面是使用示例

PS> .\inputTest.ps1 -foo one,two,three
我希望这个程序的输出是
[1,2,3]
,但它返回的是
[1,2,3]
。这是一个问题,因为我想使用逗号来消除这些值


powershell为什么要删除逗号?为了保留它们,我需要做哪些更改?

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

只需将参数用引号引起来:

inputTest.ps1 -foo "one, two, three"
或者,您可以“引用”逗号:

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

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

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


以下选项可用

  • 在所有参数(')周围加引号

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

  • Powershell在每个逗号前的转义字符(严重重音(`))

    inputTest.ps1-foo一、二、三

  • 围绕参数的双引号不会改变任何东西
    单引号消除扩展。

    转义字符(重重音)消除了下一个字符的扩展

    如果要从批处理文件传递参数,请按如下所示加密参数
    “参数1、参数2、参数3、参数4”

    谢谢。这就是我要找的。双引号似乎有一种奇怪的行为。如果我直接在Powershell中使用它们,它们就可以工作,但如果我使用另一个程序的参数启动Powershell,它们就不能工作。