如何让PowerShell 5.1接收含连字符的完整参数字符串?
解决PowerShell 5.1接收含连字符的完整字符串参数问题
在PowerShell 5.1中,当你向脚本的[string]$ExtraArguments参数传递包含-的字符串时,PowerShell会默认把以-开头的内容解析为脚本的独立参数,而非目标参数的取值,这就是$ExtraArguments为空的核心原因。以下是几种可靠的解决方式:
方法1:用单引号包裹完整参数值
单引号在PowerShell中是原样字符串,不会解析内部的特殊字符(包括-),能确保整个字符串被完整传递:
.\YourScript.ps1 -ExtraArguments '-units PixelsPerInch -resample 72'
如果之前用单引号只收到-units,大概率是调用时没把整个目标字符串用单引号完整包裹,检查是否有多余的空格或引号拆分。
方法2:用反引号转义双引号内的连字符
如果需要在参数值中使用变量插值(必须用双引号),用PowerShell的原生转义符**反引号()**转义每个-`:
.\YourScript.ps1 -ExtraArguments "`-units PixelsPerInch `-resample 72"
注意:PowerShell不识别反斜杠作为转义符,必须用键盘左上角的反引号。
方法3:使用停止解析符号--%
--%会让PowerShell停止解析后续内容,直接按原生命令行格式传递参数,适合复杂的含特殊字符的场景:
.\YourScript.ps1 --% -ExtraArguments "-units PixelsPerInch -resample 72"
这种方式下,PowerShell不会再把-units等识别为脚本参数,而是完整传递给$ExtraArguments。
内容的提问来源于stack exchange,提问作者Hobbes
相关产品推荐
相关产品推荐

