18

传递给命令时,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。我试过使用呼叫操作员但没有成功。

4

3 回答 3

11

如果您希望出现一个空字符串,请尝试在参数周围使用转义引号,如下所示:

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 上的行为是否完全相同。

于 2012-04-24T15:51:15.790 回答
10

尝试传递用双引号括起来的空单引号字符串,反之亦然。

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

或者

./echoargs $b.name, '""'
于 2012-04-24T11:49:00.087 回答
3

这也应该有效:

./echoargs [String]::Empty
于 2018-04-07T11:25:22.907 回答