Powershell удаляет кавычки при запуске процесса - PullRequest
1 голос
/ 09 ноября 2011

Давайте посмотрим на код ниже

$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 ]

1 голос
/ 09 ноября 2011

Вы, вероятно, не должны использовать Invoke-Expression (см. Это сообщение от команды PowerShell)

Вместо этого вы можете создать массив аргументов, а затем передать их с помощью оператора вызова. См. мой пост на эту тему для более подробной информации.

В вашем случае это будет выглядеть примерно так:

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

Надеюсь, это поможет

0 голосов
/ 09 ноября 2011

Попробуйте выполнить

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

Кроме того, получите echoargs.exe от Расширение сообщества PowerShell s, чтобы увидеть, как аргументы передаются из Powershell в команды и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...