Sobre as políticas de execuçãoAbout Execution Policies

Descrição breveShort Description

Descreve as políticas de execução do PowerShell e explica como gerenciá-las.Describes the PowerShell execution policies and explains how to manage them.

Descrição longaLong Description

A política de execução do PowerShell é um recurso de segurança que controla as condições sob as quais o PowerShell carrega arquivos de configuração e executa scripts.PowerShell's execution policy is a safety feature that controls the conditions under which PowerShell loads configuration files and runs scripts. Esse recurso ajuda a impedir a execução de scripts mal-intencionados.This feature helps prevent the execution of malicious scripts.

Em um computador com Windows, você pode definir uma política de execução para o computador local, para o usuário atual ou para uma sessão específica.On a Windows computer you can set an execution policy for the local computer, for the current user, or for a particular session. Você também pode usar uma configuração de Política de Grupo para definir políticas de execução para computadores e usuários.You can also use a Group Policy setting to set execution policies for computers and users.

As políticas de execução para o computador local e o usuário atual são armazenadas no registro.Execution policies for the local computer and current user are stored in the registry. Você não precisa definir políticas de execução no seu perfil do PowerShell.You don't need to set execution policies in your PowerShell profile. A política de execução para uma sessão específica é armazenada apenas na memória e é perdida quando a sessão é fechada.The execution policy for a particular session is stored only in memory and is lost when the session is closed.

A política de execução não é um sistema de segurança que restringe as ações do usuário.The execution policy isn't a security system that restricts user actions. Por exemplo, os usuários podem ignorar facilmente uma política digitando o conteúdo do script na linha de comando quando não puderem executar um script.For example, users can easily bypass a policy by typing the script contents at the command line when they cannot run a script. Em vez disso, a política de execução ajuda os usuários a definir regras básicas e impede que eles as violem involuntariamente.Instead, the execution policy helps users to set basic rules and prevents them from violating them unintentionally.

Em computadores não Windows, a política de execução padrão é irrestrita e não pode ser alterada.On non-Windows computers, the default execution policy is Unrestricted and cannot be changed. O Set-ExecutionPolicy cmdlet está disponível, mas o PowerShell exibe uma mensagem de console que não tem suporte.The Set-ExecutionPolicy cmdlet is available, but PowerShell displays a console message that it's not supported. Embora Get-ExecutionPolicy o retorne irrestrito em plataformas não Windows, o comportamento realmente corresponde ao bypass porque essas plataformas não implementam as zonas de segurança do Windows.While Get-ExecutionPolicy returns Unrestricted on non-Windows platforms, the behavior really matches Bypass because those platforms do not implement the Windows Security Zones.

Políticas de execução do PowerShellPowerShell execution policies

A imposição dessas políticas só ocorre em plataformas Windows.Enforcement of these policies only occurs on Windows platforms. As políticas de execução do PowerShell são as seguintes:The PowerShell execution policies are as follows:

AllSignedAllSigned

  • Os scripts podem ser executados.Scripts can run.
  • Requer que todos os arquivos de configuração e scripts sejam assinados por um editor confiável, incluindo scripts escritos no computador local.Requires that all scripts and configuration files be signed by a trusted publisher, including scripts that you write on the local computer.
  • O solicita antes de executar scripts de editores que você ainda não classificou como confiáveis ou não confiáveis.Prompts you before running scripts from publishers that you haven't yet classified as trusted or untrusted.
  • Riscos em execução assinada, mas mal-intencionados, scripts.Risks running signed, but malicious, scripts.

BypassBypass

  • Nada está bloqueado e não há avisos ou prompts.Nothing is blocked and there are no warnings or prompts.
  • Essa política de execução é projetada para configurações nas quais um script do PowerShell é integrado a um aplicativo maior ou para configurações em que o PowerShell é a base para um programa que tem seu próprio modelo de segurança.This execution policy is designed for configurations in which a PowerShell script is built in to a larger application or for configurations in which PowerShell is the foundation for a program that has its own security model.

PadrãoDefault

  • Define a política de execução padrão.Sets the default execution policy.
  • Restrito para clientes Windows.Restricted for Windows clients.
  • RemoteSigned para servidores Windows.RemoteSigned for Windows servers.

RemoteSignedRemoteSigned

  • A política de execução padrão para computadores Windows Server.The default execution policy for Windows server computers.
  • Os scripts podem ser executados.Scripts can run.
  • Requer uma assinatura digital de um editor confiável em arquivos de configuração e scripts que são baixados da Internet, que inclui programas de email e mensagens instantâneas.Requires a digital signature from a trusted publisher on scripts and configuration files that are downloaded from the internet which includes email and instant messaging programs.
  • Não requer assinaturas digitais em scripts que são gravados no computador local e não baixados da Internet.Doesn't require digital signatures on scripts that are written on the local computer and not downloaded from the internet.
  • Executa scripts que são baixados da Internet e não assinados, se os scripts forem desbloqueados, como usando o Unblock-File cmdlet.Runs scripts that are downloaded from the internet and not signed, if the scripts are unblocked, such as by using the Unblock-File cmdlet.
  • Riscos que executam scripts não assinados de fontes diferentes da Internet e scripts assinados que podem ser mal-intencionados.Risks running unsigned scripts from sources other than the internet and signed scripts that could be malicious.

RestritosRestricted

  • A política de execução padrão para computadores cliente Windows.The default execution policy for Windows client computers.
  • Permite comandos individuais, mas não permite scripts.Permits individual commands, but does not allow scripts.
  • Impede a execução de todos os arquivos de script, incluindo arquivos de formatação e configuração ( .ps1xml ), arquivos de script de módulo ( .psm1 ) e perfis do PowerShell ( .ps1 ).Prevents running of all script files, including formatting and configuration files (.ps1xml), module script files (.psm1), and PowerShell profiles (.ps1).

IndefinidoUndefined

  • Não há nenhuma política de execução definida no escopo atual.There is no execution policy set in the current scope.
  • Se a política de execução em todos os escopos for indefinida , a política de execução efetiva será restrita para clientes Windows e RemoteSigned para Windows Server.If the execution policy in all scopes is Undefined , the effective execution policy is Restricted for Windows clients and RemoteSigned for Windows Server.

IrrestritoUnrestricted

  • A política de execução padrão para computadores não Windows e não pode ser alterada.The default execution policy for non-Windows computers and cannot be changed.
  • Os scripts não assinados podem ser executados.Unsigned scripts can run. Há um risco de executar scripts mal-intencionados.There is a risk of running malicious scripts.
  • Avisa o usuário antes de executar scripts e arquivos de configuração que não são da zona da intranet local.Warns the user before running scripts and configuration files that are not from the local intranet zone.

Observação

Em sistemas que não diferenciam caminhos UNC (Convenção de nomenclatura universal) de caminhos da Internet, os scripts identificados por um caminho UNC podem não ter permissão para serem executados com a política de execução RemoteSigned .On systems that do not distinguish Universal Naming Convention (UNC) paths from internet paths, scripts that are identified by a UNC path might not be permitted to run with the RemoteSigned execution policy.

Escopo da política de execuçãoExecution policy scope

Você pode definir uma política de execução que só é eficaz em um escopo específico.You can set an execution policy that is effective only in a particular scope.

Os valores válidos para o escopo são MachinePolicy , UserPolicy , process , CurrentUser e LocalMachine .The valid values for Scope are MachinePolicy , UserPolicy , Process , CurrentUser , and LocalMachine . LocalMachine é o padrão ao definir uma política de execução.LocalMachine is the default when setting an execution policy.

Os valores de escopo são listados em ordem de precedência.The Scope values are listed in precedence order. A política que tem precedência é eficaz na sessão atual, mesmo que uma política mais restritiva tenha sido definida em um nível mais baixo de precedência.The policy that takes precedence is effective in the current session, even if a more restrictive policy was set at a lower level of precedence.

Para obter mais informações, consulte Set-ExecutionPolicy.For more information, see Set-ExecutionPolicy.

MachinePolicyMachinePolicy

Definido por um Política de Grupo para todos os usuários do computador.Set by a Group Policy for all users of the computer.

UserPolicyUserPolicy

Definido por um Política de Grupo para o usuário atual do computador.Set by a Group Policy for the current user of the computer.

ProcessarProcess

O escopo do processo afeta apenas a sessão atual do PowerShell.The Process scope only affects the current PowerShell session. A política de execução é salva na variável de ambiente $env:PSExecutionPolicyPreference , em vez de no registro.The execution policy is saved in the environment variable $env:PSExecutionPolicyPreference, rather than the registry. Quando a sessão do PowerShell é fechada, a variável e o valor são excluídos.When the PowerShell session is closed, the variable and value are deleted.

CurrentUserCurrentUser

A política de execução afeta apenas o usuário atual.The execution policy affects only the current user. Ele é armazenado na subchave do registro HKEY_CURRENT_USER .It's stored in the HKEY_CURRENT_USER registry subkey.

LocalMachineLocalMachine

A política de execução afeta todos os usuários no computador atual.The execution policy affects all users on the current computer. Ele é armazenado na subchave do registro HKEY_LOCAL_MACHINE .It's stored in the HKEY_LOCAL_MACHINE registry subkey.

Gerenciando a política de execução com o PowerShellManaging the execution policy with PowerShell

Para obter a política de execução efetiva para a sessão atual do PowerShell, use o Get-ExecutionPolicy cmdlet.To get the effective execution policy for the current PowerShell session, use the Get-ExecutionPolicy cmdlet.

O comando a seguir obtém a política de execução efetiva:The following command gets the effective execution policy:

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:To get all of the execution policies that affect the current session and display them in precedence order:

Get-ExecutionPolicy -List

O resultado é semelhante ao seguinte exemplo de saída:The result looks similar to the following sample output:

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

Nesse caso, a política de execução efetiva é RemoteSigned porque a política de execução para o usuário atual tem precedência sobre a política de execução definida para o computador local.In this case, the effective execution policy is RemoteSigned because the execution policy for the current user takes precedence over the execution policy set for the local computer.

Para obter a política de execução definida para um escopo específico, use o parâmetro Scope de Get-ExecutionPolicy .To get the execution policy set for a particular scope, use the Scope parameter of Get-ExecutionPolicy.

Por exemplo, o comando a seguir obtém a política de execução para o escopo CurrentUser :For example, the following command gets the execution policy for the CurrentUser scope:

Get-ExecutionPolicy -Scope CurrentUser

Alterar a política de execuçãoChange the execution policy

Para alterar a política de execução do PowerShell no computador com Windows, use o Set-ExecutionPolicy cmdlet.To change the PowerShell execution policy on your Windows computer, use the Set-ExecutionPolicy cmdlet. A alteração entra em vigor imediatamente.The change is effective immediately. Você não precisa reiniciar o PowerShell.You don't need to restart PowerShell.

Se você definir a política de execução para os escopos LocalMachine ou CurrentUser , a alteração será salva no registro e permanecerá em vigor até que você o altere novamente.If you set the execution policy for the scopes LocalMachine or the CurrentUser , the change is saved in the registry and remains effective until you change it again.

Se você definir a política de execução para o escopo do processo , ela não será salva no registro.If you set the execution policy for the Process scope, it's not saved in the registry. A política de execução é mantida até que o processo atual e todos os processos filho sejam fechados.The execution policy is retained until the current process and any child processes are closed.

Observação

No Windows Vista e versões posteriores do Windows, para executar comandos que alteram a política de execução para o computador local, escopo de LocalMachine , inicie o PowerShell com a opção Executar como administrador .In Windows Vista and later versions of Windows, to run commands that change the execution policy for the local computer, LocalMachine scope, start PowerShell with the Run as administrator option.

Para alterar sua política de execução:To change your execution policy:

Set-ExecutionPolicy -ExecutionPolicy <PolicyName>

Por exemplo:For example:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Para definir a política de execução em um escopo específico:To set the execution policy in a particular scope:

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

Por exemplo:For example:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Um comando para alterar uma política de execução pode ter sucesso, mas ainda não alterar a política de execução efetiva.A command to change an execution policy can succeed but still not change the effective execution policy.

Por exemplo, um comando que define a política de execução para o computador local pode ter sucesso, mas ser substituído pela política de execução para o usuário atual.For example, a command that sets the execution policy for the local computer can succeed but be overridden by the execution policy for the current user.

Remover a política de execuçãoRemove the execution policy

Para remover a política de execução para um escopo específico, defina a política de execução como indefinido .To remove the execution policy for a particular scope, set the execution policy to Undefined .

Por exemplo, para remover a política de execução para todos os usuários do computador local:For example, to remove the execution policy for all the users of the local computer:

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine

Para remover a política de execução para um escopo :To remove the execution policy for a Scope :

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser

Se nenhuma política de execução for definida em nenhum escopo, a política de execução efetiva será restrita , que é o padrão para clientes Windows.If no execution policy is set in any scope, the effective execution policy is Restricted , which is the default for Windows clients.

Definir uma política diferente para uma sessãoSet a different policy for one session

Você pode usar o parâmetro ExecutionPolicy de pwsh.exe para definir uma política de execução para uma nova sessão do PowerShell.You can use the ExecutionPolicy parameter of pwsh.exe to set an execution policy for a new PowerShell session. A política afeta apenas a sessão atual e as sessões filho.The policy affects only the current session and child sessions.

Para definir a política de execução para uma nova sessão, inicie o PowerShell na linha de comando, como cmd.exe ou do PowerShell e, em seguida, use o parâmetro ExecutionPolicy de pwsh.exe para definir a política de execução.To set the execution policy for a new session, start PowerShell at the command line, such as cmd.exe or from PowerShell, and then use the ExecutionPolicy parameter of pwsh.exe to set the execution policy.

Por exemplo:For example:

pwsh.exe -ExecutionPolicy AllSigned

A política de execução definida não é armazenada no registro.The execution policy that you set isn't stored in the registry. Em vez disso, ele é armazenado na $env:PSExecutionPolicyPreference variável de ambiente.Instead, it's stored in the $env:PSExecutionPolicyPreference environment variable. A variável é excluída quando você fecha a sessão na qual a política está definida.The variable is deleted when you close the session in which the policy is set. Você não pode alterar a política editando o valor da variável.You cannot change the policy by editing the variable value.

Durante a sessão, a política de execução definida para a sessão tem precedência sobre uma política de execução definida no registro para o computador local ou o usuário atual.During the session, the execution policy that is set for the session takes precedence over an execution policy that is set in the registry for the local computer or current user. No entanto, ele não tem precedência sobre a política de execução definida usando um Política de Grupo.However, it doesn't take precedence over the execution policy set by using a Group Policy.

Usar Política de Grupo para gerenciar a política de execuçãoUse Group Policy to Manage Execution Policy

Você pode usar a configuração ativar a execução de Script política de grupo para gerenciar a política de execução de computadores em sua empresa.You can use the Turn on Script Execution Group Policy setting to manage the execution policy of computers in your enterprise. A configuração de Política de Grupo substitui as políticas de execução definidas no PowerShell em todos os escopos.The Group Policy setting overrides the execution policies set in PowerShell in all scopes.

As configurações ativar política de execução de script são as seguintes:The Turn on Script Execution policy settings are as follows:

  • Se você desabilitar ativar a execução de script , os scripts não são executados.If you disable Turn on Script Execution , scripts do not run. Isso é equivalente à política de execução restrita .This is equivalent to the Restricted execution policy.

  • Se habilitar ativar a execução do script , você poderá selecionar uma política de execução.If you enable Turn on Script Execution , you can select an execution policy. As configurações de Política de Grupo são equivalentes às seguintes configurações de política de execução:The Group Policy settings are equivalent to the following execution policy settings:

    Política de GrupoGroup Policy Política de execuçãoExecution Policy
    Permitir todos os scriptsAllow all scripts IrrestritoUnrestricted
    Permitir scripts locais e scripts remotos assinadosAllow local scripts and remote signed scripts RemoteSignedRemoteSigned
    Permitir somente scripts assinadosAllow only signed scripts AllSignedAllSigned
  • Se ativar a execução do script não estiver configurado, ele não terá nenhum efeito.If Turn on Script Execution is not configured, it has no effect. A política de execução definida no PowerShell é eficaz.The execution policy set in PowerShell is effective.

Os arquivos PowerShellExecutionPolicy. adm e PowerShellExecutionPolicy. admx adicionam a política de execução ativar script aos nós configuração do computador e configuração do usuário no Editor de política de grupo nos caminhos a seguir.The PowerShellExecutionPolicy.adm and PowerShellExecutionPolicy.admx files add the Turn on Script Execution policy to the Computer Configuration and User Configuration nodes in Group Policy Editor in the following paths.

Para o Windows XP e o Windows Server 2003:For Windows XP and Windows Server 2003:

Modelos administrativos do Windows\windows PowerShellAdministrative Templates\Windows Components\Windows PowerShell

Para o Windows Vista e versões posteriores do Windows:For Windows Vista and later versions of Windows:

Templates\Classic administrativo Modelos Administrativos Administrative Templates\Classic Administrative Templates
Windows Windows\windows PowerShellWindows Components\Windows PowerShell

As políticas definidas no nó Configuração do computador têm precedência sobre as políticas definidas no nó Configuração do usuário.Policies set in the Computer Configuration node take precedence over policies set in the User Configuration node.

Confira mais informações em about_Group_Policy_Settings.For more information, see about_Group_Policy_Settings.

Precedência de política de execuçãoExecution policy precedence

Ao determinar a política de execução efetiva para uma sessão, o PowerShell avalia as políticas de execução na seguinte ordem de precedência:When determining the effective execution policy for a session, PowerShell evaluates the execution policies in the following precedence order:

  • Política de Grupo: MachinePolicyGroup Policy: MachinePolicy
  • Política de Grupo: UserPolicyGroup Policy: UserPolicy
  • Política de execução: processo (ou pwsh.exe -ExecutionPolicy )Execution Policy: Process (or pwsh.exe -ExecutionPolicy)
  • Política de execução: CurrentUserExecution Policy: CurrentUser
  • Política de execução: LocalMachineExecution Policy: LocalMachine

Gerenciar scripts assinados e não assinadosManage signed and unsigned scripts

No Windows, programas como o Internet Explorer e o Microsoft Edge adicionam um fluxo de dados alternativo a arquivos que são baixados.In Windows, programs like Internet Explorer and Microsoft Edge add an alternate data stream to files that are downloaded. Isso marca o arquivo como "proveniente da Internet".This marks the file as "coming from the Internet". Se a política de execução do PowerShell for RemoteSigned , o PowerShell não executará scripts não assinados que são baixados da Internet que inclui programas de email e mensagens instantâneas.If your PowerShell execution policy is RemoteSigned , PowerShell won't run unsigned scripts that are downloaded from the internet which includes email and instant messaging programs.

Você pode assinar o script ou optar por executar um script não assinado sem alterar a política de execução.You can sign the script or elect to run an unsigned script without changing the execution policy.

A partir do PowerShell 3,0, você pode usar o parâmetro Stream do Get-Item cmdlet para detectar arquivos bloqueados porque eles foram baixados da Internet.Beginning in PowerShell 3.0, you can use the Stream parameter of the Get-Item cmdlet to detect files that are blocked because they were downloaded from the internet. Use o Unblock-File cmdlet para desbloquear os scripts para que você possa executá-los no PowerShell.Use the Unblock-File cmdlet to unblock the scripts so that you can run them in PowerShell.

Para obter mais informações, consulte about_Signing, Get-Iteme desbloquear-File.For more information, see about_Signing, Get-Item, and Unblock-File.

Observação

Outros métodos de download de arquivos podem não marcar os arquivos como provenientes da zona da Internet.Other methods of downloading files may not mark the files as coming from the Internet Zone. Alguns exemplos incluem:Some examples include:

  • curl.exe
  • Invoke-RestMethod
  • Invoke-WebRequest

Política de execução no Windows Server Core e no Window nano ServerExecution policy on Windows Server Core and Window Nano Server

Quando o PowerShell 6 é executado no Windows Server Core ou no Windows nano Server em determinadas condições, as políticas de execução podem falhar com o seguinte erro:When PowerShell 6 is run on Windows Server Core or Windows Nano Server under certain conditions, execution policies can fail with the following error:

AuthorizationManager check failed.
At line:1 char:1
+ C:\scriptpath\scriptname.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

O PowerShell usa APIs no Shell da área de trabalho do Windows ( explorer.exe ) para validar a zona de um arquivo de script.PowerShell uses APIs in the Windows Desktop Shell (explorer.exe) to validate the Zone of a script file. O Shell do Windows não está disponível no Windows Server Core e no Windows nano Server.The Windows Shell is not available on Windows Server Core and Windows Nano Server.

Você também poderá obter esse erro em qualquer sistema Windows se o Shell da área de trabalho do Windows estiver indisponível ou sem resposta.You could also get this error on any Windows system if the Windows Desktop Shell is unavailable or unresponsive. Por exemplo, durante o logon, um script de logon do PowerShell pode iniciar a execução antes que a área de trabalho do Windows esteja pronta, resultando em falha.For example, during sign on, a PowerShell logon script could start execution before the Windows Desktop is ready, resulting in failure.

Usar uma política de execução de bypass ou AllSigned não requer uma verificação de zona, o que evita o problema.Using an execution policy of ByPass or AllSigned does not require a Zone check which avoids the problem.

Consulte TambémSee Also

about_Environment_Variablesabout_Environment_Variables

about_Group_Policy_Settingsabout_Group_Policy_Settings

about_Signingabout_Signing

Get-ExecutionPolicyGet-ExecutionPolicy

Get-ItemGet-Item

Ajuda do console do PwshPwsh Console Help

Set-ExecutionPolicySet-ExecutionPolicy

Unblock-FileUnblock-File