10

It appears that I can escape command line arguments using single or double quotes:

PS C:\> echo Hello World
Hello
World
PS C:\> echo 'Hello World'
Hello World
PS C:\> echo "Hello World"
Hello World

But there's still something I can't figure out, which is when you wish to run an executable from a directory that contains a space in it:

PS C:\> c:\program files\test.exe
The term 'c:\program' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.
At line:1 char:11
+ c:\program  <<<< files\test.exe
PS C:\> 'c:\program files\test.exe'
c:\program files\test.exe
PS C:\> "c:\program files\test.exe"
c:\program files\test.exe
PS C:\>

How do I get PowerShell to run the executable above?

1

2 Answers 2

20

Try putting an ampersand before the command. For example

& 'C:\Program Files\winscp\winscp.exe'
Sign up to request clarification or add additional context in comments.

1 Comment

This is the more correct answer as it simply tells the parser to interpret the next token in command mode, though it looks like a string.
11

Use this:

. "c:\program files\test.exe"

Actually an even better solution would be:

Invoke-Item "c:\program files\test.exe"

or using the alias:

ii "c:\program files\test.exe"

Using Invoke-Item means that the proper Windows file handler would be used. So for an EXE file it would run it. For a .doc file for instance, it would open it in Microsoft Word.

Here is one of the handiest PowerShell command lines around. Give it a try:

ii .

3 Comments

Invoke-Expression certainly has security concerns associated with it's use but I'm not aware of issues with Invoke-Item. Could you elaborate?
You probably want to use & instead of . if you're trying to call an executable. The . call operator is really intended for including other PowerShell scripts in the current context. See Get-Help about_Operators.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.