Powershell seems to drop empty string arguments when passed to a command. I have this code
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
You can assume that $b has a 'name' member. How can i pass this as an argument to the exe even when the value is an empty string. I've tried using the call operator with no success.
If you want an empty string to appear try escaped quotes around the argument like so:
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" ""
Note that I tested this on V3 so I'm not sure if the behavior will be exactly the same on V2.
Try to pass an empty single quote string enclosed in double quotes, or vice versa.
./echoargs $b.name, "''"
or
./echoargs $b.name, '""'
This should also work:
./echoargs [String]::Empty