Set-ExecutionPolicy
Define as políticas de execução do PowerShell para computadores Windows.
Syntax
Set-ExecutionPolicy
[-ExecutionPolicy] <ExecutionPolicy>
[[-Scope] <ExecutionPolicyScope>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
O Set-ExecutionPolicy
cmdlet altera as políticas de execução do PowerShell para computadores Windows. Para obter mais informações, consulte about_Execution_Policies.
A partir do PowerShell 6.0 para computadores não Windows, a política de execução padrão é irrestrita e não pode ser alterada. O Set-ExecutionPolicy
cmdlet está disponível, mas o PowerShell exibe uma mensagem de console que não tem suporte.
Uma política de execução faz parte da estratégia de segurança do PowerShell. As políticas de execução determinam se você pode carregar arquivos de configuração, como seu perfil do PowerShell, ou executar scripts. E se os scripts devem ser assinados digitalmente antes de serem executados.
O Set-ExecutionPolicy
escopo padrão do cmdlet é LocalMachine, que afeta todos que usam o computador. Para alterar a política de execução para LocalMachine, inicie o PowerShell com Executar como Administrador.
Para exibir as políticas de execução para cada escopo na ordem de precedência, use Get-ExecutionPolicy -List
. Para ver a política de execução efetiva para sua sessão do PowerShell, use Get-ExecutionPolicy
sem parâmetros.
Exemplos
Exemplo 1: Definir uma política de execução
Este exemplo mostra como definir a política de execução para o computador local.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine RemoteSigned
O Set-ExecutionPolicy
cmdlet usa o parâmetro ExecutionPolicy para especificar a política RemoteSigned . O parâmetro Escopo especifica o valor de escopo padrão, LocalMachine. Para exibir as configurações da política de execução, use o Get-ExecutionPolicy
cmdlet com o parâmetro Lista .
Exemplo 2: definir uma política de execução que entra em conflito com um Política de Grupo
Esse comando tenta definir a política de execução do escopo LocalMachine como Restrito. LocalMachine é mais restritiva, mas não é a política eficaz porque entra em conflito com um Política de Grupo. A política restrita é gravada no HKEY_LOCAL_MACHINE do hive do Registro.
PS> Set-ExecutionPolicy -ExecutionPolicy Restricted -Scope LocalMachine
Set-ExecutionPolicy : PowerShell updated your local preference successfully, but the setting is
overridden by the Group Policy applied to your system. Due to the override, your shell will retain
its current effective execution policy of "AllSigned". Contact your Group Policy administrator for
more information. At line:1 char:20 + Set-ExecutionPolicy <<<< restricted
PS> Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds
Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds
Name Property
---- --------
Microsoft.PowerShell Path : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
ExecutionPolicy : Restricted
ScriptedDiagnostics ExecutionPolicy : Unrestricted
O Set-ExecutionPolicy
cmdlet usa o parâmetro ExecutionPolicy para especificar a política restrita . O parâmetro Escopo especifica o valor de escopo padrão, LocalMachine.
O Get-ChildItem
cmdlet usa o parâmetro Path com o provedor HKLM para especificar o local do registro.
Exemplo 3: aplicar a política de execução de um computador remoto a um computador local
Esse comando obtém o objeto de política de execução de um computador remoto e define a política no computador local. Get-ExecutionPolicy
envia um objeto Microsoft.PowerShell.ExecutionPolicy pelo pipeline. Set-ExecutionPolicy
aceita a entrada de pipeline e não requer o parâmetro ExecutionPolicy .
PS> Invoke-Command -ComputerName Server01 -ScriptBlock { Get-ExecutionPolicy } | Set-ExecutionPolicy
O Invoke-Command
cmdlet é executado no computador local e envia o ScriptBlock para o computador remoto. O parâmetro ComputerName especifica o computador remoto, Server01. O parâmetro ScriptBlock é executado Get-ExecutionPolicy
no computador remoto. O Get-ExecutionPolicy
objeto é enviado pelo pipeline para o Set-ExecutionPolicy
.
Set-ExecutionPolicy
aplica a política de execução ao escopo padrão do computador local, LocalMachine.
Exemplo 4: Definir o escopo de uma política de execução
Este exemplo mostra como definir uma política de execução para um escopo especificado, CurrentUser. O escopo do CurrentUser afeta apenas o usuário que define esse escopo.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser AllSigned
LocalMachine RemoteSigned
Set-ExecutionPolicy
usa o parâmetro ExecutionPolicy para especificar a política AllSigned .
O parâmetro Scope especifica o CurrentUser. Para exibir as configurações da política de execução, use o Get-ExecutionPolicy
cmdlet com o parâmetro Lista .
A política de execução efetiva para o usuário se torna AllSigned.
Exemplo 5: Remover a política de execução para o usuário atual
Este exemplo mostra como usar a política de execução indefinida para remover uma política de execução para um escopo especificado.
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
Set-ExecutionPolicy
usa o parâmetro ExecutionPolicy para especificar a política indefinida .
O parâmetro Scope especifica o CurrentUser. Para exibir as configurações da política de execução, use o Get-ExecutionPolicy
cmdlet com o parâmetro Lista .
Exemplo 6: Definir a política de execução para a sessão atual do PowerShell
O escopo do processo afeta apenas a sessão atual do PowerShell. A política de execução é salva na variável $env:PSExecutionPolicyPreference
de ambiente e é excluída quando a sessão é fechada.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope Process
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process AllSigned
CurrentUser RemoteSigned
LocalMachine RemoteSigned
O Set-ExecutionPolicy
parâmetro ExecutionPolicy usa para especificar a política AllSigned . O parâmetro Escopo especifica o processo de valor. Para exibir as configurações da política de execução, use o Get-ExecutionPolicy
cmdlet com o parâmetro Lista .
Exemplo 7: desbloquear um script para executá-lo sem alterar a política de execução
Este exemplo mostra como a política de execução RemoteSigned impede que você execute scripts não assinados.
Uma prática recomendada é ler o código do script e verificar se ele é seguro antes de usar o Unblock-File
cmdlet. O Unblock-File
cmdlet desbloqueia scripts para que eles possam ser executados, mas não altera a política de execução.
PS> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
PS> Get-ExecutionPolicy
RemoteSigned
PS> .\Start-ActivityTracker.ps1
.\Start-ActivityTracker.ps1 : File .\Start-ActivityTracker.ps1 cannot be loaded.
The file .\Start-ActivityTracker.ps1 is not digitally signed.
The script will not execute on the system.
For more information, see about_Execution_Policies at https://go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .\Start-ActivityTracker.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
PS> Unblock-File -Path .\Start-ActivityTracker.ps1
PS> Get-ExecutionPolicy
RemoteSigned
PS> .\Start-ActivityTracker.ps1
Task 1:
O Set-ExecutionPolicy
parâmetro ExecutionPolicy usa para especificar a política RemoteSigned . A política é definida para o escopo padrão, LocalMachine.
O Get-ExecutionPolicy
cmdlet mostra que RemoteSigned é a política de execução efetiva para a sessão atual do PowerShell.
O scriptStart-ActivityTracker.ps1 é executado do diretório atual. O script é bloqueado pelo RemoteSigned porque o script não está assinado digitalmente.
Para este exemplo, o código do script foi revisado e verificado como seguro para ser executado. O Unblock-File
cmdlet usa o parâmetro Path para desbloquear o script.
Para verificar se Unblock-File
isso não alterou a política de execução, Get-ExecutionPolicy
exibe a política de execução efetiva, RemoteSigned.
O script Start-ActivityTracker.ps1 é executado no diretório atual. O script começa a ser executado porque foi desbloqueado pelo Unblock-File
cmdlet.
Parâmetros
-Confirm
Solicita sua confirmação antes de executar o cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ExecutionPolicy
Especifica a política de execução. Se não houver Políticas de Grupo e a política de execução de cada escopo for definida como Indefinida, Restricted se tornará a política efetiva para todos os usuários.
Os valores aceitáveis da política de execução são os seguintes:
- AllSigned. Exige que todos os scripts e arquivos de configuração sejam assinados por um editor confiável, incluindo scripts escritos no computador local.
- Ignorar. Nada está bloqueado e não há avisos ou prompts.
- Default. Define a política de execução padrão. Restrito para clientes Windows ou RemoteSigned para servidores Windows.
- RemoteSigned. Exige que todos os scripts e arquivos de configuração baixados da Internet sejam assinados por um editor confiável. A política de execução padrão para computadores windows server.
- Restrito. Não carrega arquivos de configuração nem executa scripts. A política de execução padrão para computadores cliente Windows.
- Indefinido. Nenhuma política de execução é definida para o escopo. Remove uma política de execução atribuída de um escopo que não é definido por um Política de Grupo. Se a política de execução em todos os escopos for indefinida, a política de execução efetiva será restrita.
- Irrestrito. A partir do PowerShell 6.0, essa é a política de execução padrão para computadores não Windows e não pode ser alterada. Carrega todos os arquivos de configuração e executa todos os scripts. Se você executar um script sem sinal que foi baixado da Internet, será solicitado permissão antes de ele ser executado.
Type: | ExecutionPolicy |
Accepted values: | AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined, Unrestricted |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Force
Suprime todas as solicitações de confirmação. Tenha cuidado com esse parâmetro para evitar resultados inesperados.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Scope
Especifica o escopo afetado por uma política de execução. O escopo padrão é LocalMachine.
A política de execução efetiva é determinada pela ordem de precedência da seguinte maneira:
- MachinePolicy. Definido por um Política de Grupo para todos os usuários do computador.
- UserPolicy. Definido por um Política de Grupo para o usuário atual do computador.
- Processo. Afeta apenas a sessão atual do PowerShell.
- CurrentUser. Afeta apenas o usuário atual.
- LocalMachine. Escopo padrão que afeta todos os usuários do computador.
O escopo do processo afeta apenas a sessão atual do PowerShell. A política de execução é salva na variável $env:PSExecutionPolicyPreference
de ambiente, em vez do registro. Quando a sessão do PowerShell é fechada, a variável e o valor são excluídos.
As políticas de execução para o escopo currentUser são gravadas no HKEY_LOCAL_USER de hive do Registro.
As políticas de execução para o escopo LocalMachine são gravadas no HKEY_LOCAL_MACHINE de hive do Registro.
Type: | ExecutionPolicyScope |
Accepted values: | CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy |
Position: | 1 |
Default value: | LocalMachine |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Microsoft.PowerShell.ExecutionPolicy, System.String
Você pode canalizar um objeto de política de execução ou uma cadeia de caracteres que contém o nome de uma política de execução para Set-ExecutionPolicy
.
Saídas
None
Set-ExecutionPolicy
não retorna nenhuma saída.
Observações
Set-ExecutionPolicy
não altera os escopos MachinePolicy e UserPolicy porque eles são definidos por Políticas de Grupo.
Set-ExecutionPolicy
não substitui um Política de Grupo, mesmo que a preferência do usuário seja mais restritiva do que a política.
Se o Política de Grupo Ativar Execução de Script estiver habilitado para o computador ou usuário, a preferência do usuário será salva, mas não será eficaz. O PowerShell exibe uma mensagem que explica o conflito.