PowerShell diz " a execução de scripts está desativada neste sistema."

Estou tentando executar um arquivo [tag:cmd] que chama um script [tag:powerhell] do cmd.exe, e estou recebendo o erro abaixo:

Management_Install.ps1 não pode ser carregado porque a execução de scripts está desativada neste sistema.

Eu fugi.

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

e quando eu executo Get-ExecutionPolicy de [tag:powerhell], eu recebo Unrestricted de volta.

PS C:\Users\Administrator\> Get-ExecutionPolicy
Unrestricted

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> powershell .\Management_Install.ps1 1

WARNING: Running x86 PowerShell...

Arquivo C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1 não pode ser carregado porque a execução de scripts está desativada neste sistema. Por favor, veja "get-help about_signing" para mais detalhes.

Na linha:1 char:25

  • .\Gestão_Instalação.ps1 <<<<< 1
  • CategoryInfo : NotSpecified: (:) [:) [], PSSecurityException
  • TotallyQualifiedErrorId : RuntimeException
C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> PAUSE

Press any key to continue . . .

O sistema é o Windows Server 2008R2.

O que estou a fazer mal?

Solução

Se você estiver usando Windows Server 2008 R2 então há uma versão x64 e x86 do PowerShell, ambas têm que ter suas políticas de execução definidas. Você definiu a política de execução em ambos os hosts?

Como um Administrador, você pode definir a política de execução digitando isso na sua janela PowerShell:

Set-ExecutionPolicy RemoteSigned

Para mais informações, consulte Usando o Cmdlet Set-ExecutionPolicy.

Comentários (6)

Você pode contornar esta política adicionando `-ExecutionPolicy ByPass' ao executar o PowerShell

powershell -ExecutionPolicy ByPass -File script.ps1
Comentários (5)

RemoteSigned: todos os scripts que você mesmo criou serão executados, e todos os scripts baixados da Internet precisarão ser assinados por uma editora de confiança.

OK, mude a política simplesmente digitando:

Set-ExecutionPolicy RemoteSigned
Comentários (1)