Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I'm trying to make a PowerShell script to launch programs after I boot up my machine. I'm taking things out of the registry's "run" area and putting them in the script in the order that I want and after inserting some delays for items that are not important to run immediately. This is the code to start Outlook for instance:

# Outlook
Start-Sleep -s 10
Invoke-Item "c:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE"

That works for paths that do not have a switch, but I can't get it to work if there is a switch involved. For example this is the launch command for Windows Live Messenger:

c:\Program Files (x86)\Windows Live\Messenger\msnmsgr.exe /background

So the spaces also cause some problems. I've tried this:

#Start-Sleep -s 10
$test= {"c:\Program Files (x86)\Windows Live\Messenger\msnmsgr.exe"}
Invoke-Item $test /background

but that doesn't work either.

Any ideas?

share|improve this question

2 Answers 2

up vote 0 down vote accepted

Use Invoke-Expression :

#Start-Sleep -s 10
$test= "c:\Program Files (x86)\Windows Live\Messenger\msnmsgr.exe /background"
Invoke-Expression $test 
share|improve this answer

Hi someone on Twitter helped me find the solution.

I don't need the Invoke-Item command at all and I did try without it at first, but starting with an ampersand worked. So, my line should have been:

& 'c:\Program Files (x86)\Windows Live\Messenger\msnmsgr.exe' /background

Hope that helps someone else in future as I couldn't find much online.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.