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-Expression
es realmente el cmdlet incorrecto; es mejor utilizarlo Start-Process
.