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)