about_Execution_Policies

Aplica-se a: Windows PowerShell 2.0, Windows PowerShell 3.0

TÓPICO

about_Execution_Policies

DESCRIÇÃO BREVE

Descreve as políticas de execução do Windows PowerShell® e explica como gerenciá-las.

DESCRIÇÃO LONGA

As políticas de execução do Windows PowerShell permitem que você determine as condições sob as quais o Windows PowerShell carrega arquivos de configuração e executa scripts.

Você pode configurar uma política de execução para o computador local, para o usuário atual ou para uma determinada sessão. Você também pode usar uma configuração de Política de Grupo para configurar a política de execução para computadores e usuários.

As políticas de execução do computador local e do usuário atual são armazenadas no Registro. Você não precisa configurar políticas de execução em seu perfil do Windows PowerShell. A política de execução para uma determinada sessão é armazenada somente na memória e é perdida quando a sessão é fechada.

A política de execução não é um sistema de segurança que restringe as ações do usuário. Por exemplo, os usuários podem contornar uma política facilmente digitando o conteúdo do script na linha de comando quando não puderem executar um script. Em vez disso, a política de execução ajuda os usuários a configurar regras básicas e os impede de violá-las acidentalmente.

POLÍTICAS DE EXECUÇÃO DO WINDOWS POWERSHELL

As políticas de execução do Windows PowerShell são as seguintes:

"Restricted" é a política padrão.

RESTRICTED

- Política de execução padrão do Windows 8, Windows Server 2012 e Windows 8.1.

- Permite comandos individuais, mas não executará scripts.

- 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.

- Exige que todos os arquivos de configuração e scripts sejam assinados por um fornecedor confiável, incluindo scripts gravados no computador local.

- Avisará antes de executar scripts de editores que ainda não foram classificados como confiáveis ou não.

- Arrisca executar scripts assinados, mas mal-intencionados.

REMOTESIGNED

- Os scripts podem ser executados. Essa é a política de execução padrão do Windows Server 2012 R2.

- Exige uma assinatura digital de um fornecedor confiável em scripts e arquivos de configuração que são baixados da Internet (incluindo email e programas de mensagens instantâneas).

- Não exige assinaturas digitais em scripts que você tenha gravado no computador local (não baixados da Internet).

- Executa scripts que são baixados da Internet e não assinados se os scripts estiverem desbloqueados, como usando o cmdlet Unblock-File.

- Arrisca executar scripts não assinados de fontes diferentes da Internet e scripts assinados, mas mal-intencionados.

UNRESTRICTED

- Scripts não assinados podem ser executados. (Corre o risco de execução de scripts mal-intencionados.)

- Avisa o usuário antes de executar scripts e arquivos de configuração que são baixados da Internet.

BYPASS

- Nada é bloqueado e não há avisos ou prompts.

- Essa política de execução destina-se a configurações nas quais um script do Windows PowerShell é integrado a um aplicativo maior ou para configurações nas quais o Windows PowerShell é a base para um programa que tem seu próprio modelo de segurança.

UNDEFINED

- Não há nenhuma política de execução configurada no escopo atual.

- Se a política de execução de todos os escopos for Undefined, a política de execução em vigor será a Restricted, que é a política de execução padrão.

Observação: nos sistemas que não fazem distinção de caminhos da UNC (Convenção de Nomenclatura Universal) em relação a caminhos da Internet, os scripts que forem identificados por um caminho de UNC não podem ser executados com a política de execução RemoteSigned.

ESCOPO DA POLÍTICA DE EXECUÇÃO

Você pode configurar uma política de execução que esteja em vigor somente em um escopo específico.

Os valores válidos para Scope são Process, CurrentUser e LocalMachine. LocalMachine é o padrão ao configurar uma política de execução.

Os valores Scope são listadas em ordem de precedência.

- PROCESS

A política de execução afeta apenas a sessão atual (o processo atual do Windows PowerShell).

A política de execução é armazenada na variável de ambiente $env:PSExecutionPolicyPreference, e não no Registro, e é excluída quando a sessão é fechada. Você não pode alterar a política editando o valor da variável.

- CURRENTUSER

A política de execução afeta apenas o usuário atual. É armazenada na subchave do Registro HKEY_CURRENT_USER.

- LOCALMACHINE

A política de execução afeta todos os usuários do computador atual. É armazenada na subchave do Registro HKEY_LOCAL_MACHINE.

A política que tem precedência estará em vigor na sessão atual, mesmo que uma política mais restritiva tenha sido configurada em um nível de precedência inferior.

Para obter mais informações, consulte Set-ExecutionPolicy.

COMO OBTER SUA POLÍTICA DE EXECUÇÃO

Para obter a política 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 política de execução atual:

Get-ExecutionPolicy    

Para obter todas as políticas 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 do seguinte exemplo:

                  Scope    ExecutionPolicy
                  -----    ---------------
          MachinePolicy          Undefined
             UserPolicy          Undefined
                Process          Undefined
            CurrentUser       RemoteSigned
           LocalMachine          AllSigned

Nesse caso, a política de execução em vigor é RemoteSigned porque a política de execução do usuário atual tem precedência sobre a política configurada para o computador local.

Para obter a política de execução configurada para um escopo específico, use o parâmetro Scope de Get-ExecutionPolicy.

Por exemplo, o comando a seguir obtém a política de execução para o escopo atual do usuário.

        Get-ExecutionPolicy -Scope CurrentUser
        

COMO ALTERAR SUA POLÍTICA DE EXECUÇÃO

Para alterar a política de execução do Windows PowerShell em seu computador, use o cmdlet Set-ExecutionPolicy.

A alteração entrará em vigor imediatamente. Você não precisa reiniciar o Windows PowerShell.

Se você configurar a política de execução para o computador local (o padrão) ou o usuário atual, a alteração será salva no Registro e permanecerá em vigor até você alterá-la novamente.

Se você configurar a política de execução do processo atual, ela não será salva no Registro. Ela será mantida até que o processo atual e todos os processos filho sejam fechados.

Observação: No Windows Vista e versões posteriores do Windows, para executar comandos que alteram a política de execução do computador local (o padrão), inicie o Windows PowerShell com a opção "Executar como administrador".

Para alterar sua política de execução, digite:

        Set-ExecutionPolicy -ExecutionPolicy <PolicyName>

Por exemplo:

        Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Para configurar a política de execução em um escopo específico, digite:

        Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>

Por exemplo:

        Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Um comando para alterar uma política de execução pode ser bem-sucedido, mas não alterar a política de execução em vigor.

Por exemplo, um comando que configure a política de execução do computador local pode ser bem-sucedido, mas ser substituído pela política de execução do usuário atual.

COMO REMOVER SUA POLÍTICA DE EXECUÇÃO

Para remover a política de execução para um escopo específico, configure o valor da política de execução como Undefined.

Por exemplo, para remover a política de execução para todos os usuários do computador local, digite:

        Set-ExecutionPolicy Undefined

Ou digite:

        Set-ExecutionPolicy Undefined -scope LocalMachine

Se nenhuma política de execução for configurada no escopo, a política de execução em vigor é Restricted, que é a padrão.

COMO CONFIGURAR UMA POLÍTICA DE EXECUÇÃO DIFERENTE PARA UMA SESSÃO

Você pode usar o parâmetro ExecutionPolicy do PowerShell.exe para configurar uma política de execução para uma nova sessão do Windows PowerShell. A política afeta somente a sessão atual e as sessões filho.

Para configurar a política de execução para uma nova sessão, inicie o Windows PowerShell na linha de comando (como Cmd.exe ou Windows PowerShell) e, em seguida, use o parâmetro ExecutionPolicy do PowerShell.exe para configurar a política de execução.

Por exemplo:

PowerShell.exe -ExecutionPolicy AllSigned

A política de execução configurada não é armazenada no Registro. Em vez disso, ela é armazenada na variável de ambiente $env:PSExecutionPolicyPreference. A variável será excluída quando você fechar a sessão na qual a política estiver configurada. Você não pode alterar a política editando o valor da variável.

Durante a sessão, a política de execução que é configurada para a sessão tem precedência sobre uma política de execução configurada no Registro do computador local ou do usuário atual. No entanto, ele não tem precedência sobre a política de execução configurada usando uma configuração de Política de Grupo (discutida a seguir).

USO DA POLÍTICA DE GRUPO PARA GERENCIAR A POLÍTICA DE EXECUÇÃO

Você pode usar a configuração de Política de Grupo "Turn on Script Execution" para gerenciar a política de execução dos computadores de sua empresa. A configuração de Política de Grupo substitui as políticas de execução configuradas no Windows PowerShell em todos os escopos.

As configurações da política "Turn on Script Execution" são as seguintes:

-- Se você desabilitar a opção "Turn on Script Execution", os scripts não serão executados. Isso é equivalente à política de execução "Restricted".

-- Se você habilitar a opção "Turn on Script Execution", poderá selecionar uma política de execução. As configurações da Política de Grupo são equivalentes às configurações de política de execução a seguir.

        Group Policy                Execution Policy  
        ------------                ----------------
        Allow all scripts.          Unrestricted

        Allow local scripts         RemoteSigned
        and remote signed
        scripts. 

        Allow only signed           AllSigned
        scripts.

-- Se a opção "Turn on Script Execution" não for configurada, ela não terá efeito. A política de execução configurada no Windows PowerShell entrará em vigor.

Os arquivos PowerShellExecutionPolicy.adm e PowerShellExecutionPolicy.admx são adicionados à política "Turn on Script Execution" aos nós Computer Configuration e User Configuration no Editor de Política de Grupo Local nos seguintes caminhos.

        For Windows XP and Windows Server 2003:
        Administrative Templates\Windows Components\Windows PowerShell

        For Windows Vista and later versions of Windows:
        Administrative Templates\Classic Administrative Templates\
        Windows Components\Windows PowerShell

As políticas configuradas no nó Computer Configuration têm precedência sobre as políticas configuradas no nó User Configuration.

O arquivo PowerShellExecutionPolicy.adm está disponível no Centro de Download da Microsoft. Para obter mais informações, consulte "Modelos administrativos para o Windows PowerShell" em https://go.microsoft.com/fwlink/?LinkId=131786.

Para obter mais informações, consulte about_Group_Policy_Settings em https://go.microsoft.com/fwlink/?LinkID=251696.

PRECEDÊNCIA DAS POLÍTICAS DE EXECUÇÃO

Ao determinar a política de execução em vigor para uma sessão, o Windows PowerShell avalia as políticas de execução na seguinte ordem de precedência:

        - Group Policy: Computer Configuration
        - Group Policy: User Configuration
        - Execution Policy: Process (or PowerShell.exe -ExecutionPolicy)
        - Execution Policy: CurrentUser
        - Execution Policy: LocalMachine    

GERENCIAR SCRIPTS ASSINADOS E NÃO ASSINADOS

Se sua política de execução do Windows PowerShell for RemoteSigned, o Windows PowerShell não executará scripts não assinados que forem baixados da Internet (incluindo email e programas de mensagens instantâneas).

Você pode assinar o script ou optar por executar um script não assinado sem alterar a política de execução.

A partir do Windows PowerShell 3.0, você pode usar o parâmetro Stream do cmdlet Get-Item para detectar arquivos bloqueados porque eles foram baixados da Internet, e pode usar o cmdlet Unblock-File para desbloquear os scripts para poder executá-los no Windows PowerShell.

Para obter mais informações, consulte about_Signing, Get-Item e Unblock-File.

CONSULTE TAMBÉM

about_Environment_Variables

about_Signing

Get-ExecutionPolicy

Set-ExecutionPolicy

Get-Item

Unblock-File

"Modelos administrativos para o Windows PowerShell"

(https://go.microsoft.com/fwlink/?LinkId=131786)

"Ajuda do console do PowerShell.exe"

(https://go.microsoft.com/fwlink/?LinkID=113439)