使用PowerShell将空参数传递给可执行文件

22

Powershell似乎在传递给命令时会丢弃空字符串参数。我有这段代码:

PS D:\> $b.name = "foo bar"
PS D:\> ./echoargs $b.name
Arg 0 is D:\echoargs.exe
Arg 1 is foo bar
PS D:\> $b.name = ""
PS D:\> ./echoargs $b.name
Arg 0 is D:\echoargs.exe

假定$b有一个“name”成员。即使该值为空字符串,我该如何将其作为参数传递给exe。我尝试使用调用运算符,但没有成功。

3个回答

12

如果您想显示一个空字符串,请尝试在参数周围使用转义引号,例如:

PS> $b = [psobject]@{name = ''}
PS> echoargs `"$($b.Name)`"
Arg 0 is <>

Command line:
"C:\Users\Keith\Pscx\Trunk\Src\Pscx\bin\Release\Apps\EchoArgs.exe"  ""

请注意,我在V3上测试过这个,所以我不确定在V2上的行为是否完全相同。


11

尝试传递一个空的单引号字符串,用双引号括起来,或者反过来。

./echoargs $b.name, "''"
或者
./echoargs $b.name, '""'

7
我在 PS v5 中测试了这两种方法,第一种不起作用,但第二种可以:./echoargs $b.name, '""'。在我的情况下,参数之间的逗号似乎是不必要的。 - goodman

3
这个也应该可以工作:
./echoargs [String]::Empty

似乎无法与PowerShell v5.1一起使用。 - stackprotector

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接