Stan
Stan

Reputation: 1999

Powershell remove quotes when start process

Let's look at the code below

$SBK="0x1682CCD8 0x8A1A43EA 0xA532EEB6 0xECFE1D98"
./windows/nvflash/nvflash.exe --sbk 0x1682CCD8 0x8A1A43EA 0xA532EEB6 0xECFE1D98
./windows/nvflash/nvflash.exe --sbk "0x1682CCD8 0x8A1A43EA 0xA532EEB6 0xECFE1D98"
./windows/nvflash/nvflash.exe --sbk $SBK

I have define a string var $SBK and then I'm going to pass it for some app. The first process call is working properly. The second one fails and therefore application doesn't accepts quotes. But the third call is failed too with the same error. It seems that powershell passes quotes, those are causing errors. But how to eliminate them? Thanks beforehand.

Upvotes: 1

Views: 705

Answers (2)

Start-Automating
Start-Automating

Reputation: 8367

You should probably not use Invoke-Expression (see This Post from the PowerShell Team)

Instead, you can create an array of arguments, and then pass them using the call operator. See this post of mine on the subject for more details.

In your case, it would look something like this:

$SBKArgs="--sbk", "0x1682CCD8", "0x8A1A43EA", "0xA532EEB6", "0xECFE1D98"
$cmd = Get-Command ./windows/nvflash/nvflash.exe 
& $cmd $sbkargs

Hope this Helps

Upvotes: 1

manojlds
manojlds

Reputation: 301147

Try doing

iex "./windows/nvflash/nvflash.exe --sbk $SBK"

Also, get echoargs.exe from PowerShell Community Extensions to see how args are passed from Powershell to commands etc.

Upvotes: 1

Related Questions