about_Execution_Policies

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)