Quando você tenta rodar um .ps1 e o Windows reclama com:
running scripts is disabled on this system
não é erro do script — é a política padrão do PowerShell (Restricted).
Aqui está um guia completo, objetivo e organizado, cobrindo:
- Execução única
- Liberação por usuário
- Liberação por sistema inteiro
- Liberação total
- Execução em tarefas agendadas ignorando qualquer política
1. Executar apenas aquele script (sem alterar o sistema)
A forma mais segura.
Nada no Windows é modificado.
powershell.exe -ExecutionPolicy Bypass -File C:\Monitor\status.ps1
Ideal para testes, scripts únicos ou ambientes restritos.
2. Liberar somente para o usuário atual (modo recomendado)
Afeta apenas o usuário logado.
É a liberação mínima que resolve 99% dos casos.
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Permite scripts locais e exige assinatura para scripts baixados da internet.
3. Liberar para o sistema inteiro (todos os usuários)
Nível LocalMachine.
Vale para qualquer usuário, qualquer processo, qualquer sessão.
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
Esse é o ajuste “global real”, usado em ambientes corporativos onde scripts são padrão.
4. Liberação total (tudo roda, de qualquer lugar)
Abertura completa.
Set-ExecutionPolicy Unrestricted -Scope LocalMachine
Funciona, mas não é indicado para máquinas expostas ou multiusuário.
5. Ignorar a política quando rodar via Tarefa Agendada
O método profissional.
Mesmo que a política esteja em Restricted, o script sempre executa:
-ExecutionPolicy Bypass -File C:\Monitor\status.ps1
Isso permite automatizar scripts sem mexer em nenhuma política global.
Resumo Rápido
| Necessidade | Comando |
|---|---|
| Rodar só uma vez | Bypass -File |
| Resolver para o usuário atual | RemoteSigned -Scope CurrentUser |
| Liberar para o sistema inteiro | RemoteSigned -Scope LocalMachine |
| Liberação total | Unrestricted -Scope LocalMachine |
| Scheduled Task ignorar política | Bypass -File |
Simples, prático e sem mexer onde não precisa.
