Из командной строки 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
.