Estou tentando executar um cmd arquivo que chama um PowerShellscript de 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 corri
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
e quando eu corro Get-ExecutionPolicy
dePowerShellEu Unrestricted
volto.
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...
O 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, consulte "get-help about_signing
" para mais detalhes.Na linha: 1 caractere: 25
.\Management_Install.ps1
<<<< 1
CategoryInfo: NotSpecified: (:) [], PSSecurityException
FullyQualifiedErrorId: 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 fazendo errado?
Get-ExecutionPolicy -List
.Respostas:
Se você estiver usando o Windows Server 2008 R2, há as versões x64 e x86 do PowerShell, que precisam ter suas políticas de execução definidas. Você definiu a política de execução nos dois hosts?
Como administrador , você pode definir a política de execução digitando isso na janela do PowerShell:
Para obter mais informações, consulte Usando o cmdlet Set-ExecutionPolicy .
Quando terminar, você pode definir a política de volta ao seu valor padrão com:
fonte
Set-ExecutionPolicy Restricted
parece ser a maneira de desfazê-lo se você quiser recuperar as permissões como estavam: technet.microsoft.com/en-us/library/ee176961.aspx . O método temporário desvio pela@Jack Edmonds
aparência mais seguro para mim:powershell -ExecutionPolicy ByPass -File script.ps1
Get-ExecutionPolicy -List
ajudaram-me a ver os diferentes escopos. O cmdGet-ExecutionPolicy
não mostra todos os escopos.Import-Module SQLPS
Agora está trabalhando com políticas alterados da seguinte forma:{Undefined- Process,MachinePolicy,UserPolicy,}; {RemoteSigned- CurrentUser, LocalMachine}
.Você pode ignorar esta política para um único arquivo adicionando
-ExecutionPolicy Bypass
ao executar o PowerShellfonte
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass
na minha barra de tarefas.type script.ps1 | powershell -
funciona..ps1
e executem acidentalmente algo que não pretendiam. Isso aconteceria com.bat
arquivosEu tive um problema semelhante e observei que o padrão
cmd
no Windows Server 2012 estava executando o x64.No Windows 7 , Windows 8 , Windows 10 , Windows Server 2008 R2 ou Windows Server 2012 , execute os seguintes comandos como Administrador :
x86 (32 bits)
Abrir
C:\Windows\SysWOW64\cmd.exe
Execute o comando
powershell Set-ExecutionPolicy RemoteSigned
x64 (64 bits)
Abrir
C:\Windows\system32\cmd.exe
Execute o comando
powershell Set-ExecutionPolicy RemoteSigned
Você pode verificar o modo usando
echo %PROCESSOR_ARCHITECTURE%
[Environment]::Is64BitProcess
Referências:
MSDN - Políticas de execução do Windows PowerShell
Windows - explicação de diretório de 32 bits vs 64 bits
fonte
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 :
Os benefícios, conforme enumerados no PowerShell Basics - Política de Execução e Assinatura de Código , são:
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:
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:
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:
Você pode encontrar o local exato executando a variável powershell
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.
fonte
Get-Content .\MyFile.ps1 | powershell.exe -NoProfile -
.-ExecutionPolicy ByPass
, no entanto, qual é o objetivo dessa política? É apenas para impedir que os usuários abram acidentalmente um console do PowerShell e executem um script malicioso? O invasor não poderia simplesmente usar um script executável ou em lote se quisesse contornar isso? Mesmo depois de ler @BaconBits comentar eu não tenho certeza do que cenário esta política destina-se a evitar ...No Windows 7:
Vá para o menu Iniciar e procure por "Windows PowerShell ISE".
Clique com o botão direito na versão x86 e escolha "Executar como administrador".
Na parte superior, cole
Set-ExecutionPolicy RemoteSigned
; execute o script. Escolha "Sim".Repita estas etapas também para a versão de 64 bits do Powershell ISE (a versão não x86).
Estou apenas esclarecendo as etapas que @Chad Miller deu a entender. Obrigado Chad!
fonte
A execução desse comando antes do script também resolve o problema:
fonte
RemoteSigned
antes de remover todas as restrições à sua política de segurança. Se isso não funcionar, reavalie quais são seus pontos negativos e por que não está funcionando. Você pode definirunrestricted
como último recurso, mas não deve ser o seu ponto de partida.Remotesigned
.Se você estiver em um ambiente em que não seja administrador, poderá definir a Política de Execução apenas para você, e ela não exigirá administrador.
ou
Você pode ler tudo sobre isso na entrada de ajuda.
fonte
Set-ExecutionPolicy Unrestricted
como administrador não parecia "irrestrito" o suficiente para realmente ajudar.RemoteSigned: todos os scripts criados por você serão executados e todos os scripts baixados da Internet precisarão ser assinados por um editor confiável.
OK, altere a política digitando:
fonte
Podemos obter o status atual
ExecutionPolicy
pelo comando abaixo:Por padrão, é restrito . Para permitir a execução de scripts do PowerShell, precisamos definir este ExecutionPolicy como Ignorar ou Irrestrito .
Podemos definir a política para o usuário atual como
Bypass
ouUnrestricted
usando qualquer um dos comandos abaixo do PowerShell:A política irrestrita 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 uma permissão antes da execução.
Enquanto na política de desvio , nada é bloqueado e não há avisos ou avisos durante a execução do script. O desvio
ExecutionPolicy
é mais descontraído do queUnrestricted
.fonte
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;
AKA maneira rápida e suja de dizer ao VS2015 para parar de reclamar e executar meu maldito script. obrigado. salva-vidas.Estou usando o Windows 10 e não consegui executar nenhum comando. O único comando que me deu algumas pistas foi:
[x64]
Mas isso não funcionou. Foi limitado. Provavelmente novas políticas de segurança para o Windows10. Eu tive este erro:
Então eu encontrei outra maneira ( solução ):
Agora abra o PowerShell e aproveite;)
fonte
Set-ExecutionPolicy RemoteSigned
Unrestricted
. É melhor usarRemoteSigned
A definição da política de execução é específica do ambiente. Se você estiver tentando executar um script a partir do x86 ISE em execução, precisará usar o x86 PowerShell para definir a política de execução. Da mesma forma, se você estiver executando o ISE de 64 bits, precisará definir a política com o PowerShell de 64 bits.
fonte
Win+ Re digite o comando copy paste e pressione OK:
E execute seu script.
Em seguida, reverta alterações como:
fonte
Você também pode ignorar isso usando o seguinte comando:
Você também pode ler este artigo de Scott Sutherland, que explica 15 maneiras diferentes de ignorar o PowerShell
Set-ExecutionPolicy
se você não tiver privilégios de administrador:15 maneiras de ignorar a política de execução do PowerShell
fonte
fonte
você pode tentar isso e selecionar a opção "Todos"
fonte
No editor do PowerShell ISE , encontrei a execução da seguinte linha, primeiro dos scripts permitidos.
fonte
No PowerShell 2.0, a política de execução foi definida como desativada por padrão.
A partir de então, a equipe do PowerShell fez muitas melhorias e está confiante de que os usuários não quebrarão muito as coisas ao executar scripts. Portanto, a partir do PowerShell 4.0, ele é ativado por padrão.
No seu caso, digite
Set-ExecutionPolicy RemoteSigned
no console do PowerShell e diga sim.fonte
Eu tive o mesmo problema hoje. A política de execução de 64 bits era irrestrita, enquanto a de 32 bits era restrita.
Veja como alterar remotamente apenas a política de 32 bits:
fonte
Vá para o caminho do registro
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
e definaExecutionPolicy
comoRemoteSigned
.fonte
Recebo outro aviso quando tento executar
Set-ExecutionPolicy RemoteSigned
Eu resolvi com esses comandos
fonte
Se você está aqui por executá-lo com Ruby ou Chef e usar `` a execução do sistema, execute o seguinte:
Esse comando é para obter a pasta "MyDocuments".
-ExecutionPolicy Unrestricted
faz o truque.Espero que seja útil para outra pessoa.
fonte
Várias respostas apontam para a política de execução. No entanto, algumas coisas também exigem "administrador de runas". Isso é mais seguro, pois não há alteração permanente na política de execução e pode passar pelas restrições do administrador. Use com o schedtask para iniciar um lote com:
de Jack Edmonds acima e Peter Mortensen / Dhana da postagem Como executar um aplicativo como "executar como administrador" no prompt de comando?
fonte
Eu achei que essa linha funcionava melhor para um dos meus servidores Windows Server 2008 R2. Alguns outros não tiveram problemas sem essa linha nos meus scripts do PowerShell:
fonte
Abra o console do Powershell como administrador e defina a política de execução
fonte
Você pode usar uma maneira especial de ignorá-lo:
Ele canaliza o conteúdo do script powershell para powershell.exe e o executa ignorando a política de execução.
fonte
Isso resolveu meu problema
Abra o
PowerShell
Comando do Windows e execute a consulta abaixo para alterarExecutionPolicy
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
se solicitar alterações, pressione 'Y' e pressione enter.
fonte
Executar
Set-ExecutionPolicy RemoteSigned
comandofonte
use este comando
fonte
Abra o cmd em vez do PowerShell. Isso me ajudou ...
fonte
Abra a janela do PowerShell como administrador . Vai funcionar.
fonte