Quando tenta correr um script PowerShell que não foi assinado por um editor de confiança, pode obter o seguinte erro de segurança:
“script.ps1 :File path\script.ps1 cannot be loaded. O ficheiro path\script.ps1 não está assinado digitalmente. Você não pode executar este script no sistema atual.”

Este erro de segurança pode ocorrer quando a política de execução do PowerShell está definida para Allsigned ou Remotesigned e o script não está assinado.

Allsigned execution policy permite a execução de todos os scripts Powershell que estão assinados. Antes de executar o script você será solicitado a confirmar que você confia no editor que assinou o script.

A política de execução remota restringe a execução dos scripts baixados que não são assinados. Scripts que são executados a partir do computador local não precisam ser assinados.

Solução

Existem diferentes métodos para superar este erro. Você pode optar por assinar o script PowerShell, alterar a política de execução, ignorar a política ou desbloquear o arquivo para que ele possa ser executado uma vez naquela sessão.

Check Execution Policy

Primeiro de todos verifique sua política de execução usando a cmdlet Get-ExecutionPolicy

PS C:\> Get-ExecutionPolicyAllSigned

O parâmetro de lista na cmdlet Get-ExecutionPolicy diz a política de execução para cada escopo.

PS C:\> Get-ExecutionPolicy -list Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser Undefined LocalMachine RemoteSigned

A política de execução padrão para todas as versões do Windows exceto para o Windows 2012 R2 é Restrita. A política de execução padrão no Windows 2012 R2 é RemoteSigned.

Changing Execution Policy Permanently

O método mais fácil mas inseguro de se livrar desta mensagem de erro é alterar a ExecutionPolicy usando o cmdlet SetExecutionPolicy. O seguinte comando define a política de execução como irrestrita.

PS C:\> Set-ExecutionPolicy unrestricted

Pressione Y para confirmar a alteração quando solicitado. A alteração da política é atualizada no registro e permanecerá até que você a altere novamente.

Changing Execution Policy Temporarily

Em vez de alterar a política de execução permanentemente você poderia definir uma política diferente para uma única sessão PowerShell. Isto é feito usando o parâmetro ExecutionPolicy do powerhell.exe

Abra um prompt de comando ou PowerShell e execute o comando:

C:\> powershell.exe -executionpolicy -bypass

O comando acima abre uma sessão PowerShell com a política de execução para aquela sessão definida como Bypass o que significa que nada está bloqueado.

Desbloquear um arquivo que foi baixado

Quando a política de execução é RemoteSigned, os arquivos que são baixados da internet (ou de e-mails) são bloqueados para proteger seus scripts inseguros em execução. Se você confia que o conteúdo do script é seguro, então você pode desbloqueá-lo para rodar em sua sessão usando o Unblock-File cmdlet

PS C:\> Unblock-File -Path C:\Downloads\script1.ps1

Após ter alterado a política de execução permanente ou temporariamente para uma sessão ou um script em particular, você pode continuar rodando o script, mas antes disso certifique-se de que o conteúdo do script não prejudique seu computador

Deixe uma resposta

O seu endereço de email não será publicado.