A execução de um executável do PowerShell não funciona com espaços no caminho

A execução de um executável do PowerShell não funciona com espaços no caminho

No prompt do PowerShell:

\Windows\system32\mspaint.exe

executará o Paint. O mesmo acontecerá

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

mas se houver um espaço no caminho, o PowerShell cospe o manequim, por exemplo

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

Que reclama:

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

o que estou perdendo?

Responder1

De acordo comesseartigo no Technet, colocar o caminho entre aspas duplas não é suficiente.

O caminho que você está tentando usar deve ter um&(e comercial) na frente do diretório ou não funcionará.

Por exemplo:

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

Responder2

A maneira mais simples é usar o operador Invoke:

&'String containing the path'

Observe que para iniciar um executável Invoke-Expressioné realmente o cmdlet errado, é melhor usar Start-Process.

informação relacionada