executando Invoke-Item do PowerShell com um switch

2

Estou tentando criar um script do PowerShell para iniciar programas depois que eu inicializo minha máquina. Estou tirando coisas da área de "execução" do registro e colocando-as no script na ordem que desejo e depois de inserir alguns atrasos para itens que não são importantes para serem executados imediatamente. Este é o código para iniciar o Outlook por exemplo:

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

Isso funciona para caminhos que não têm um comutador, mas não consigo funcionar se houver um comutador envolvido. Por exemplo, este é o comando de inicialização do Windows Live Messenger:

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

Portanto, os espaços também causam alguns problemas. Eu tentei isso:

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

mas isso também não funciona.

Alguma idéia?

    
por Kieran Walsh 15.05.2011 / 10:51

2 respostas

1

Use Invoke-Expression :

#Start-Sleep -s 10
$test= "c:\Program Files (x86)\Windows Live\Messenger\msnmsgr.exe /background"
Invoke-Expression $test 
    
por 15.05.2011 / 21:03
1

Olá, alguém no Twitter me ajudou a encontrar a solução.

Eu não preciso do comando Invoke-Item e eu tentei sem ele no começo, mas começando com um e comercial funcionou. Então, minha linha deveria ter sido:

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

Espero que isso ajude alguém no futuro, pois não encontrei muita coisa online.

    
por 15.05.2011 / 23:40