TÓPICO
about_Execution_Policies
DESCRIÇÃO RESUMIDA
Descreve as diretivas de execução do Windows PowerShell e explica como
gerenciá-las.
DESCRIÇÃO LONGA
As diretivas de execução do Windows PowerShell permitem que você
determine as condições em que o Windows PowerShell carrega arquivos de
configuração e executa scripts.
Você pode definir uma diretiva de execução para o computador
local, para o usuário atual ou para uma sessão específica. Você
também pode usar uma configuração de Diretiva de Grupo para
definir uma diretiva de execução para computadores e usuários.
As diretivas de execução para o computador local e o usuário atual são
armazenadas no Registro. Você não precisa definir diretivas de
execução em seu perfil do Windows PowerShell. A diretiva de execução
para uma sessão específica é armazenada apenas na memória e é perdida
quando a sessão é encerrada.
A diretiva de execução não é um sistema de segurança que
restringe ações do usuário.
Por exemplo, os usuários podem facilmente burlar uma diretiva
digitando o conteúdo do script na linha de comando quando não
podem executar um script. Na verdade, a diretiva de execução ajuda os
usuários a estabelecer regras básicas e os impede de violá-las
acidentalmente.
DIRETIVAS DE EXECUÇÃO DO WINDOWS POWERSHELL
-------------------------------------
As diretivas de execução do Windows PowerShell são as seguintes:
"Restricted" é a diretiva padrão.
Restricted
- Diretiva de execução padrão.
- Permite comandos individuais, mas scripts não são
executados.
- Impede a execução de todos os arquivos de script, inclusive
arquivos de formatação e configuração (.ps1xml), arquivos de
script de módulo (.psm1) e perfis do Windows PowerShell (.ps1).
AllSigned
- Os scripts podem ser executados.
- Requer que todos os scripts e arquivos de configuração sejam
assinados por um fornecedor confiável, incluindo os scripts
gravados no computador local.
- Avisa antes de executar scripts de fornecedores que você
ainda não classificou como confiáveis ou não confiáveis.
- Há risco de execução de scripts não assinados de fontes
diferentes da Internet e de scripts assinados, mas mal-
intencionados.
RemoteSigned
- Os scripts podem ser executados.
- Requer uma assinatura digital de um fornecedor confiável nos
scripts e arquivos de configuração baixados da Internet (incluindo
programas de email e de mensagens instantâneas).
- Não requer assinaturas digitais em scripts que você executou e
escreveu no computador local (não baixados da Internet).
- Há risco de execução de scripts assinados, mas
mal-intencionados.
Unrestricted
- Os scripts não assinados podem ser executados. (Há risco de
execução de scripts mal-intencionados.)
- Adverte o usuário antes de executar srcipts e arquivos de
configuração baixados da Internet.
Bypass
- Nada é bloqueado e não há avisos ou solicitações.
- Essa diretiva de execução foi criada para configurações
nas quais um script do Windows PowerShell está
incorporado a um aplicativo maior ou para configurações
nas quais o Windows PowerShell é a base de um programa
que tem seu próprio modelo de segurança.
Undefined
- Não há diretiva de execução definida no escopo atual.
- Se a diretiva de execução em todos os escopos for
Undefined, a diretiva de execução efetiva será
Restricted, que é a diretiva de execução padrão.
Observação: em sistemas que não distinguem caminhos UNC (Convenção de
Nomenclatura Universal) de caminhos de Internet, os scripts
identificados por um caminho UNC talvez não tenham permissão
para serem executados com a diretiva de execução RemoteSigned.
ESCOPO DA DIRETIVA DE EXECUÇÃO
----------------------
Você pode definir uma diretiva de execução que seja efetiva
apenas em um escopo específico.
Os valores válidos para Scope são Process, CurrentUser e LocalMachine.
LocalMachine é o padrão na definição de uma diretiva de execução.
Os valores de Scope são listados em ordem de precedência.
- Process
A diretiva de execução afeta apenas a sessão atual (o
processo atual do Windows PowerShell). A diretiva de
execução é armazenada na variável de ambiente
$PSExecutionPolicyPreference. Esse valor é excluído quando a sessão
na qual a diretiva está definida é encerrada.
- CurrentUser
A diretiva de execução afeta apenas o usuário atual. Ela é
armazenada na subchave do Registro HKEY_CURRENT_USER.
- LocalMachine
A diretiva de execução afeta todos os usuários no
computador atual. Ela é armazenada na subchave do Registro
HKEY_LOCAL_MACHINE.
A diretiva que tem precedência é efetiva na sessão atual, mesmo
que uma diretiva mais restritiva tenha sido definida em um nível de
precedência menor.
Para obter mais informações, consulte Set-ExecutionPolicy.
OBTER SUA DIRETIVA DE EXECUÇÃO
------------------------------
Para obter a diretiva de execução do Windows PowerShell que está
em vigor na sessão atual, use o cmdlet Get-ExecutionPolicy.
O comando a seguir obtém a diretiva de execução atual:
get-executionpolicy
Para obter todas as diretivas de execução que afetam a sessão
atual e exibi-las em ordem de precedência, digite:
get-executionpolicy -list
O resultado será semelhante ao seguinte exemplo de saída:
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine AllSigned
Nesse caso, a diretiva de execução efetiva é RemoteSigned porque
a diretiva de execução para o usuário atual tem precedência sobre
a diretiva de execução definida para o computador local.
Para obter a diretiva de execução definida para um escopo
específico, use o parâmetro Scope de Get-ExecutionPolicy.
Por exemplo, o comando a seguir obtém a diretiva de execução para
escopo do usuário atual.
get-executionpolicy -scope CurrentUser
ALTERE A SUA DIRETIVA DE EXECUÇÃO
------------------------------
Para alterar a diretiva de execução do Windows PowerShell em seu
computador, use o cmdlet Set-ExecutionPolicy.
A alteração se torna efetiva imediatamente; não é preciso reiniciar o
Windows PowerShell.
Se você definir a diretiva de execução para o computador local (o
padrão) ou para o usuário atual, a alteração será salva no Registro é
permanecerá efetiva até que você a altere novamente.
Se você definir a diretiva de execução para o processo atual, ela
não será salva no Registro. Ela ficará retida até que o processo
atual e qualquer processo filho sejam encerrados.
Observação: no Windows Vista e em versões mais recentes do
Windows, para executar comandos que alteram a diretiva de
execução para o computador local (o padrão), inicie o Windows
PowerShell com a opção "Executar como administrador".
Para alterar a sua diretiva de execução, digite:
Set-ExecutionPolicy <nome-da-diretiva>
Por exemplo:
Set-ExecutionPolicy RemoteSigned
Para definir a diretiva de execução em um escopo específico, digite:
Set-ExecutionPolicy <nome-da-diretiva> -scope <escopo>
Por exemplo:
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
Um comando para alterar uma diretiva de execução pode ter êxito
e, mesmo assim, não alterar a diretiva de execução efetiva.
Por exemplo, um comando que define a diretiva de execução para o
computador local pode ter êxito mas ser substituído pela diretiva de
execução do usuário atual.
REMOVER SUA DIRETIVA DE EXECUÇÃO
----------------------------
Para remover a diretiva de execução de um escopo específico,
defina o valor da diretiva de execução como Undefined.
Por exemplo, para remover a diretiva de execução de todos os
usuários do computador local, digite:
set-executionpolicy Undefined
Ou digite:
set-executionpolicy Undefined -scope LocalMachine
Se nenhuma diretiva de execução estiver definida em nenhum dos
escopos, a diretiva de execução efetiva será Restricted, que é o
padrão.
DEFINIR UMA DIRETIVA DE EXECUÇÃO NO POWERSHELL.EXE
-----------------------------------------
Você pode usar o parâmetro ExecutionPolicy do PowerShell.exe para
definir uma diretiva de execução para uma nova sessão do Windows
PowerShell.
A diretiva afetará apenas a sessão atual e as sessões filho.
Para definir a diretiva de execução de uma nova sessão, inicie o
Windows PowerShell na linha de comando (por exemplo, Cmd.exe ou
Windows PowerShell) e use o parâmetro ExecutionPolicy do
PowerShell.exe para definir a diretiva de execução.
Por exemplo:
powershell.exe -executionpolicy -allsigned
A diretiva de execução definida por você não é armazenada no Registro.
Ela é armazenada, na verdade, na variável de ambiente
$PSExecutionPolicyPreference. A variável é excluída quando você fecha
a sessão na qual a diretiva está definida.
Durante a sessão, a diretiva de execução definida para a sessão tem
precedência sobre uma diretiva de execução definida no Registro para o
computador local ou o usuário atual. Ela não tem precedência, no
entanto, sobre a diretiva de execução definida com o uso de uma
configuração de Diretiva de Grupo (descrito adiante).
USAR A DIRETIVA DE GRUPO PARA GERENCIAR A DIRETIVA DE EXECUÇÃO
-------------------------------------------
Você pode usar a configuração de Diretiva de Grupo "Ativar Execução de
Script" para gerenciar a diretiva de execução de computadores na sua
empresa. A configuração de Diretiva de Grupo substitui as diretivas
de execução definidas no Windows PowerShell em todos os escopos.
As configurações da diretiva "Ativar Execução de Script" são as
seguintes:
-- Se você desabilitar "Ativar Execução de Script", os scripts
não serão executados. Isso equivale à diretiva de execução
"Restricted".
-- Se você habilitar "Ativar Execução de Script", poderá
selecionar uma diretiva de execução. As configurações de
Diretiva de Grupo equivalem às seguintes configurações de
diretiva de execução.
Diretiva de Grupo Diretiva de Execução
----------------- --------------------
Permitir todos os scripts. Unrestricted
Permitir scripts locais e RemoteSigned
scripts assinados remotos.
Permitir apenas scripts AllSigned
assinados.
-- Se a diretiva "Ativar Execução de Script" não estiver
configurada, ela não terá efeito. A diretiva de
execução definida no Windows PowerShell é efetiva.
O arquivo PowerShellExecutionPolicy.adm adiciona a diretiva
"Ativar Execução de Script" aos nós Configuração do Computador e
Configuração de Usuário no Editor de Diretiva de Grupo nos seguintes
caminhos.
Para o Windows XP e o Windows Server 2003:
Administrative Templates\Windows Components\Windows PowerShell
Para o Windows Vista e versões mais recentes do Windows:
Administrative Templates\Classic Administrative Templates\
Windows Components\Windows PowerShell
As diretivas definidas no nó Configuração do Computador têm
precedência sobre as diretivas definidas no nó Configuração de
Usuário.
O arquivo PowerShellExecutionPolicy.adm está disponível no Centro de
Download da Microsoft. Para obter mais informações, consulte
"Administrative Templates for Windows PowerShell" (em inglês), em
https://go.microsoft.com/fwlink/?LinkId=131786.
PRECEDÊNCIA DA DIRETIVA DE EXECUÇÃO
---------------------------
Ao determinar a diretiva de execução efetiva para uma sessão, o
Windows PowerShell avalia as diretivas de execução na seguinte
ordem de precedência:
- Diretiva de Grupo: Configuração do Computador
- Diretiva de Grupo: Configuração de Usuário
- Diretiva de execução: Process (ou PowerShell.exe
- ExecutionPolicy) Diretiva de execução: CurrentUser
- Diretiva de execução: LocalMachine
GERENCIAR SCRIPTS ASSINADOS E NÃO ASSINADOS
----------------------------------
Se a sua diretiva de execução do Windows PowerShell for
RemoteSigned, o Windows PowerShell não executará scripts não
assinados que são baixados da Internet (incluindo programas de
email e de mensagens instantâneas).
Você pode assinar o script ou optar por executar um script não
assinado sem alterar a diretiva de execução.
Para obter mais informações, consulte about_Signing.
CONSULTE TAMBÉM
Get-ExecutionPolicy
Set-ExecutionPolicy
about_Signing
"Administrative Templates for Windows PowerShell" (em inglês)
(https://go.microsoft.com/fwlink/?LinkId=131786)