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 ответа

Решение

Попробуй сделать

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

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

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

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

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

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

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

Другие вопросы по тегам