Eu geralmente executo scripts do PowerShell dessa maneira:
powershell.exe -file c:\path\myscript.ps1
Para mais informações, execute isto a partir da linha de comando:
powershell.exe -help
Eu tenho um script PowerShell que eu quero executar no meu PC toda vez que eu fizer logon. Eu adicionei-o como um REG_SZ no meu usuário atual "run" chave, mas nunca executa.
Alterei a política de execução para "irrestrita", mas ainda não tive sorte.
O conteúdo do valor do registro é assim:
powershell.exe c:\path\myscript.ps1
Isso funciona no prompt de comando. Alguma idéia de por que ele não será executado a partir do registro?
Obrigado.
Hoje li sobre um script do PowerShell que continua após a reinicialização do computador. Para fazer isso, o criador de scripts grava automaticamente em sua chave de execução. Se você der uma olhada em este blogpost, você verá que ele apenas escreve o scriptname mais seus params para a chave de registro.
Eu não pude testá-lo ainda, mas se funcionou para ele, isso significa que você não adiciona "powershell.exe" na frente do scriptname.
Ok, resolvi isso. Você precisa definir a política de execução como remotesigned e não "ignorar" como a Microsoft me disse. Para fazer isso, execute este comando no powershell:
set-executionpolicy remotesigned
Então este é o REG_SZ na minha chave de execução do registro
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -file c:\path\myscript.ps1
Então, agora eu tenho um script PowerShell que inicia todos os meus programas usuais com uma lacuna entre eles, permitindo que eu comece a trabalhar na minha máquina imediatamente, sem a lentidão de cada aplicativo tentando abrir ao mesmo tempo.
Aqui está um pequeno trecho do meu arquivo * .PS1, como outros podem achar útil:
# Chrome Browser
Start-Sleep -s 20
& "C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe"
# Outlook
Start-Sleep -s 10
& "c:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE"
# Messenger
Start-Sleep -s 10
& "c:\Program Files (x86)\Windows Live\Messenger\msnmsgr.exe" /background
# Snagit
Start-Sleep -s 30
& "C:\Program Files (x86)\TechSmith\Snagit 10\Snagit32.exe" /i /h
# Evernote
Start-Sleep -s 60
& "C:\Program Files (x86)\Evernote\Evernote\EvernoteTray.exe"
Se bem me lembro, você não pode executar um script powershell diretamente (como em um clique duplo), ele deve ser executado a partir da linha de comando. Talvez o Windows veja a execução do registro como executando diretamente. O que você poderia tentar (e eu estou fora de forma aqui) está chamando o script de um arquivo de lote e, em seguida, chamando o arquivo de lote do registro.