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

Запуск исполняемого файла из 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.

Что я упускаю?

решение1

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

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

Например:

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

решение2

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

&'String containing the path'

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

Связанный контент