Запустите Veracrypt из PowerShell

Я пытаюсь запустить следующую команду из сценария powershell.

"C:\Program Files\VeraCrypt\VeraCrypt Format-x86.exe" /create "C:\test veracrypt file.hc" /password alongpasswordisagoodpassword /hash sha512 /encryption serpent /filesystem NTFS /size 100G /dynamic /force /silent

Я пытался использовать

& cmd.exe ""C:\Program Files\VeraCrypt\VeraCrypt Format-x86.exe" /create "C:\test veracrypt file.hc" /password alongpasswordisagoodpassword /hash sha512 /encryption serpent /filesystem NTFS /size 100G /dynamic /force /silent" 

А также

$command = @'
     & cmd.exe ""C:\Program Files\VeraCrypt\VeraCrypt Format-x86.exe" /create "C:\test veracrypt file.hc" /password
     alongpasswordisagoodpassword /hash sha512 /encryption serpent /filesystem NTFS /size 100G /dynamic /force /silent"  
          '@
Invoke-Expression -Command:$command

Что бы я ни делал, я получаю ошибку:

cmd.exe: "reate" не распознается как внутренняя или внешняя команда,

'Reate' не является опечаткой, c из create фактически удаляется в сообщении об ошибке. Я пытался избежать создания или вставить в кавычки, но он продолжает выдавать мне ту же ошибку.

Я также попытался поместить команду в файл bat и вызвать ее, но кажется, что она зависает, ничего не делая, хотя запуск файла bat работает, как и ожидалось.

Я новичок в powershell и подозреваю, что упускаю что-то очевидное. Что мне не хватает?

2 ответа

Решение

Вы должны просто иметь возможность использовать оператор вызова & запустить команду напрямую без использования cmd:

& "C:\Program Files\VeraCrypt\VeraCrypt Format-x86.exe" /create "C:\test veracrypt file.hc" /password alongpasswordisagoodpassword /hash sha512 /encryption serpent /filesystem NTFS /size 100G /dynamic /force /silent

От about_operators

& Оператор звонка

Запускает команду, скрипт или блок скрипта. Оператор вызова, также известный как "оператор вызова", позволяет запускать команды, которые хранятся в переменных и представлены строками. Поскольку оператор вызова не анализирует команду, он не может интерпретировать параметры команды.

На всякий случай еще один способ сделать это, который, наконец, сработал для меня:

start-process -FilePath "C:\Program Files\VeraCrypt\VeraCrypt Format-x86.exe" -ArgumentList @("/create", "C:\test veracrypt file.hc", "/password alongpasswordisagoodpassword", "/hash sha512", "/encryption serpent", "/filesystem NTFS", "/size 100G", "/dynamic", "/force", "/silent")

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