Use Invoke-Expression
:
#Start-Sleep -s 10
$test= "c:\Program Files (x86)\Windows Live\Messenger\msnmsgr.exe /background"
Invoke-Expression $test
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?
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.