Como habilitar a execução de scripts do PowerShell?

190

Quando tento executar meu script do PowerShell, recebo este erro:

File C:\Common\Scripts\hello.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see "get-help about_signing" for more details.
At line:1 char:13
+ .\hello.ps1 <<<<
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException

    
por Pavel Chuchuva 08.02.2010 / 19:41

7 respostas

295
  1. Inicie o Windows PowerShell com a opção "Executar como administrador". Somente membros do grupo Administradores no computador podem alterar a política de execução.

  2. Ative a execução de scripts não assinados, inserindo:

    set-executionpolicy remotesigned
    

Isso permitirá a execução de scripts não assinados que você escreve em seu computador local e assina scripts da Internet.

Veja também Scripts em execução na biblioteca do Microsoft TechNet.

    
por 08.02.2010 / 19:44
60

A Política de Execução Padrão é definida como restrita. Você pode vê-la digitando:

Get-ExecutionPolicy

Você deve digitar o seguinte para ir para o modo irrestrito:

Set-ExecutionPolicy unrestricted

Espero que isso ajude

    
por 08.02.2010 / 19:43
50

Na minha máquina que utilizo para scripts dev, usarei -unrestricted como acima. Ao implantar meus scripts, no entanto, em uma máquina de usuário final, apenas chamarei o powershell com a opção -executionpolicy:

powershell.exe -noprofile -executionpolicy bypass -file .\script.ps1
    
por 14.01.2013 / 01:46
8

Podemos obter o status da ExecutionPolicy atual pelo comando abaixo:

Get-ExecutionPolicy;

Por padrão, é restrito . Para permitir a execução dos scripts do PowerShell, precisamos definir essa política de execução como Ignorar ou irrestrito .

Podemos definir a política do usuário atual como Bypass ou Unrestricted usando qualquer um dos comandos abaixo do PowerShell:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;
A política

Irrestrito carrega todos os arquivos de configuração e executa todos os scripts. Se você executar um script não assinado que foi baixado da Internet, será solicitada permissão antes de ser executado.

Enquanto na política Ignorar , nada é bloqueado e não há avisos ou prompts durante a execução do script. Bypass ExecutionPolicy é mais relaxado que Unrestricted.

    
por 07.09.2016 / 09:06
4

Dependendo da versão e configuração do Windows, você pode ter o seguinte aviso, mesmo no modo Unrestricted :

Security warning
Run only scripts that you trust. While scripts from the internet can be useful, this
script can potentially harm your computer. If you trust this script, use the 
Unblock-File cmdlet to allow the script to run without this warning message. 
Do you want to run?
[D] Do not run  [R] Run once  [S] Suspend  [?] Help (default is "D")

A solução é usar a política "ignorar", ativada com o seguinte comando:

Set-ExecutionPolicy Bypass

Na documentação :

Bypass: Nothing is blocked and there are no warnings or prompts.

Isso é obviamente inseguro, por favor, entenda os riscos envolvidos.

    
por 21.01.2016 / 11:01
1

Uma chave reg com:
Windows Registry Editor Versão 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell] "EnableScripts"=dword:00000001 "ExecutionPolicy"="Bypass"

e:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell]
"EnableScripts"=dword:00000001 "ExecutionPolicy"="Unrestricted"

funciona também.

    
por 29.11.2017 / 11:10
-2

A razão pela qual a chave reg funciona é porque está fazendo exatamente o que os comandos PS fazem. Os comandos gravam as alterações nas chaves reg. Os comandos são muito mais rápidos e fáceis do que criar uma chave reg ou cavar no registro.

    
por 05.04.2018 / 15:49

Tags