В командной строке 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
.