2012-04-24 81 views
7

當傳遞給命令時,Powershell似乎會刪除空字符串參數。我有這個代碼使用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。我嘗試過使用調用操作符,但沒有成功。

回答

7

如果你想要一個空字符串顯示嘗試逃脫周圍參數報價像這樣:我測試了這個在V3所以我

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" "" 

注不確定在V2上行爲是否完全相同。

5

嘗試傳遞一個用雙引號括起來的空單引號字符串,反之亦然。

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

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

我在PS v5中測試了這兩種方法,第一個沒有用,但第二個沒有:'./echoargs $ b.name,'「」'''。在我的情況下,參數之間的逗號似乎沒有必要。 – hjoelr 2017-03-24 13:20:43

相關問題