A maioria das respostas existentes explica o Como , mas muito poucas explicam o Por que . E antes de executar o código de estranhos na Internet, especialmente o código que desativa as medidas de segurança, você deve entender exatamente o que está fazendo. Então, aqui está um pouco mais de detalhes sobre esse problema.
Na página TechNet Sobre políticas de execução :
As políticas de execução do Windows PowerShell permitem determinar as condições sob as quais o Windows PowerShell carrega arquivos de configuração e executa scripts.
Os benefícios, conforme enumerados no PowerShell Basics - Política de Execução e Assinatura de Código , são:
- Controle de execução - controle o nível de confiança para a execução de scripts.
- Comando Highjack - Impede a injeção de comandos no meu caminho.
- Identidade - o script é criado e assinado por um desenvolvedor em que confio e / ou assinado com um certificado de uma Autoridade de Certificação em que confio.
- Integridade - Os scripts não podem ser modificados por malware ou usuário mal-intencionado.
Para verificar sua política de execução atual, você pode executar Get-ExecutionPolicy
. Mas você provavelmente está aqui porque deseja mudar isso.
Para fazer isso, você executará o Set-ExecutionPolicy
cmdlet.
Você terá duas decisões importantes a tomar ao atualizar a política de execução.
Tipo de Política de Execução:
Restricted
† - Nenhum script local, remoto ou baixado pode ser executado no sistema.
AllSigned
- Todos os scripts executados precisam ser assinados digitalmente.
RemoteSigned
- Todos os scripts remotos (UNC) ou baixados precisam ser assinados.
Unrestricted
- Nenhuma assinatura para qualquer tipo de script é necessária.
Escopo da nova mudança
LocalMachine
† - A política de execução afeta todos os usuários do computador.
CurrentUser
- A política de execução afeta apenas o usuário atual.
Process
- A política de execução afeta apenas o processo atual do Windows PowerShell.
† = Padrão
Por exemplo : se você deseja alterar a política para RemoteSigned apenas para o CurrentUser, execute o seguinte comando:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Nota : Para alterar a política de execução, você deve estar executando o PowerShell como administrador . Se você estiver no modo regular e tentar alterar a política de execução, receberá o seguinte erro:
O acesso à chave do Registro 'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell' foi negado. Para alterar a política de execução para o escopo padrão (LocalMachine), inicie o Windows PowerShell com a opção "Executar como administrador".
Se você deseja reforçar as restrições internas dos seus próprios scripts que não foram baixados da Internet (ou pelo menos não contêm os metadados UNC), você pode forçar a política a executar apenas sripts assinados. Para assinar seus próprios scripts, siga as instruções no artigo de Scott Hanselman em Assinando scripts do PowerShell .
Nota : É provável que a maioria das pessoas receba esse erro sempre que abrir o Powershell, porque a primeira coisa que o PS tenta fazer ao iniciar é executar o script de perfil do usuário que configura seu ambiente da maneira que você preferir.
O arquivo normalmente está localizado em:
%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
Você pode encontrar o local exato executando a variável powershell
$profile
Se não houver nada com que você se importe no perfil e não queira mexer com suas configurações de segurança, basta excluí-lo e o PowerShell não encontrará nada que ele não possa executar.