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。我尝试使用调用运算符但没有成功。
答案 0 :(得分:7)
如果你想要一个空字符串出现,请尝试使用参数的转义引号,如下所示:
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上的行为是否完全相同。
答案 1 :(得分:5)
尝试传递用双引号括起来的空单引号字符串,反之亦然。
./echoargs $b.name, "''"
或
./echoargs $b.name, '""'
答案 2 :(得分:0)
这也应该有效:
./echoargs [String]::Empty