Spaces cause split in path with PowerShell

Not sure if someone still needs it... I needed to invoke msbuild in powershell and following worked fine:

$MSBuild = "${Env:ProgramFiles(x86)}\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe"

& $MSBuild $PathToSolution /p:OutDir=$OutDirVar /t:Rebuild /p:Configuration=Release

You can escape the space by using single quotations and a backtick before the space:

$path = 'C:\Windows Services\MyService.exe'
$path -replace ' ', '` '
invoke-expression $path

Would this do what you want?:

& "C:\Windows Services\MyService.exe"

Use &, the call operator, to invoke commands whose names or paths are stored in quoted strings and/or are referenced via variables, as in the accepted answer. Invoke-Expression is not only the wrong tool to use in this particular case, it should generally be avoided.


"&'C:\Windows Services\MyService.exe'" | Invoke-Expression

via https://www.vistax64.com/powershell/52905-invoke-expression-exe-has-spaces-its-path.html

Tags:

Powershell