Ejecutar un ejecutable desde PowerShell no funciona con espacios en la ruta

Ejecutar un ejecutable desde PowerShell no funciona con espacios en la ruta

Desde el mensaje de PowerShell:

\Windows\system32\mspaint.exe

ejecutará Paint. Así será

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

pero si hay un espacio en la ruta, PowerShell escupe el muñeco, por ejemplo

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

Que se queja:

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

¿Qué me estoy perdiendo?

Respuesta1

De acuerdo aesteartículo en Technet, encerrar la ruta entre comillas dobles no es suficiente.

La ruta que está intentando utilizar debe tener un&(ampersand) delante del directorio o no funcionará.

Por ejemplo:

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

Respuesta2

La forma más sencilla es utilizar el operador de invocación:

&'String containing the path'

Tenga en cuenta que para iniciar un ejecutable Invoke-Expressiones realmente el cmdlet incorrecto; es mejor utilizarlo Start-Process.

información relacionada