【发布时间】:2016-09-08 12:01:27
【问题描述】:
我想像这样执行一个外部程序
& $exe $arguments
$arguments 是带空格的字符串,可以说是a b c d
发生的情况是传递给 exe 的参数是
"a b c d"
用双引号括住整个内容。 $arguments 不包含空格时不会发生这种情况。
如何防止 powershell 试图变得聪明并阻止它用双引号将我的字符串包裹起来?假设所有带空格的东西都必须是路径,这是荒谬的。
编辑:由于显然不存在修复程序,因此我确实通过将每一位转换为数组来解决问题,并且它在 PS 5 中确实有效。但是 PS4 正在 ****...
我想要的是有一个命令行参数,看起来像
-filter:"+[RE*]* +[RR*]*"
PS 4 也将双引号括起来:
$filter = "+[RE*]*", "+[RR*]*"
& $opencover -target:"$xunit" "-targetargs:$allPaths $traitsCmd -quiet -nunit xunit-$results -noshadow" -register:user -filter:"$filter" -output:opencover-$results
如果我将 -filter: 替换为 '-filter:' 我最终会在 -filter: 和 $filter 数组的内容之间出现一个空格。无论我做什么,我都无法摆脱它,除非将整个内容用双引号括起来,例如“-filter:...”
【问题讨论】:
-
您是否尝试过用单引号声明
$arguments,例如:$arguments = 'a', 'b', 'c', 'd'?如果不试试这个 -
a b c d 可以说明问题。在我的脚本中,这些要复杂得多,并且是以编程方式创建的
-
它没有,因为我没有字符串文字。我有表达式,它们不会在单引号内展开
-
谢谢我试试
-
在 PS4 中不起作用。它确实可以单独工作,但如果整个事情是一个参数,PS4 会将它用双引号括起来
标签: powershell