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

use*_*535 10 powershell command-line

传递给命令时,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
Run Code Online (Sandbox Code Playgroud)

您可以假设$ b有一个'name'成员.即使值为空字符串,我如何将其作为参数传递给exe.我尝试过使用call运算符但没有成功.

Kei*_*ill 8

如果你想要一个空字符串出现尝试转义参数周围的引号,如下所示:

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"  ""
Run Code Online (Sandbox Code Playgroud)

请注意,我在V3上对此进行了测试,因此我不确定V2上的行为是否完全相同.


Sha*_*evy 5

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

./echoargs $b.name, "''"
Run Code Online (Sandbox Code Playgroud)

要么

./echoargs $b.name, '""'
Run Code Online (Sandbox Code Playgroud)

  • 我在PS v5中测试了这两种方法,第一种方法没有用,但第二种方法没有用:`./ echoo $ b.name,'""'`.在我的例子中,参数之间的逗号似乎没有必要. (2认同)