One solution is to switch to PowerShell v3, where it works great:
PS> powershell.exe -file 'C:\temp\foo - bar\location-1\foo.ps1' arg1 arg2 made it!, args are arg1, arg2
If you need to stay on V2, try escaping spaces, for example:
PS> powershell.exe -file "C:\temp\foo` -` bar\location-1\foo.ps1" arg1 arg2
From cmd.exe this should work:
C:\> PowerShell.exe -Command "& {& 'c:\Data\foo - bar\location-1\ShellScript.ps1' Arg1 Arg2}"
Keith hill
source share