Назад | Перейти на главную страницу

Запуск исполняемого файла из PowerShell не работает с пробелами в пути

В командной строке PowerShell:

\Windows\system32\mspaint.exe

запустит Paint. Так будет

Invoke-Expression -command "\Windows\system32\mspaint.exe"

но если на пути есть пробел, PowerShell выплевывает манекен, например

Invoke-Expression -command "\install\sub directory\test.bat"

Который жалуется:

The term '\install\sub' is not recognized as the name of a cmdlet, function, script file, or operable program.

Что мне не хватает?

В соответствии с этот в статье на Technet, заключить путь в двойные кавычки недостаточно.

Путь, который вы пытаетесь использовать, должен иметь & (амперсанд) перед каталогом, иначе он не будет работать.

Например:

Invoke-Expression -command & "\install\sub directory\test.bat"

Самый простой способ - использовать оператор invoke:

&'String containing the path'

Обратите внимание, чтобы запустить исполняемый файл Invoke-Expression действительно неправильный командлет, лучше использовать Start-Process.