Powershell在启动过程中删除引号

时间:2011-11-08 22:34:22

标签: powershell

让我们看看下面的代码

$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

我已经定义了一个字符串var $ SBK,然后我会将它传递给某个应用程序。第一个进程调用正常。第二个失败,因此应用程序不接受引号。但第三次调用也失败了同样的错误。似乎powershell传递了引号,这些引起了错误。但是如何消除它们呢?先谢谢。

2 个答案:

答案 0 :(得分:1)

您可能不应该使用Invoke-Expression(请参阅This Post from the PowerShell Team)

相反,您可以创建一个参数数组,然后使用call运算符传递它们。有关详细信息,请参阅this post of mine on the subject

在你的情况下,它看起来像这样:

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

希望这有助于

答案 1 :(得分:0)

尝试

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

另外,从PowerShell Community Extension获取echoargs.exe以查看args如何从Powershell传递到命令等。