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
Надеюсь это поможет