Set-ExecutionPolicy
Hiermee stelt u het PowerShell-uitvoeringsbeleid voor Windows-computers in.
Syntax
Set-ExecutionPolicy
[-ExecutionPolicy] <ExecutionPolicy>
[[-Scope] <ExecutionPolicyScope>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
De Set-ExecutionPolicy cmdlet wijzigt het PowerShell-uitvoeringsbeleid voor Windows-computers. Zie about_Execution_Policies voor meer informatie.
Vanaf PowerShell 6.0 voor niet-Windows-computers is het standaarduitvoeringsbeleid onbeperkt en kan het niet worden gewijzigd. De Set-ExecutionPolicy cmdlet is beschikbaar, maar PowerShell geeft een consolebericht weer dat deze niet wordt ondersteund.
Een uitvoeringsbeleid maakt deel uit van de PowerShell-beveiligingsstrategie. Uitvoeringsbeleid bepaalt of u configuratiebestanden, zoals uw PowerShell-profiel, kunt laden of scripts kunt uitvoeren. En of scripts digitaal moeten worden ondertekend voordat ze worden uitgevoerd.
Het Set-ExecutionPolicy standaardbereik van de cmdlet is LocalMachine, wat van invloed is op iedereen die de computer gebruikt. Als u het uitvoeringsbeleid voor LocalMachine wilt wijzigen, start u PowerShell met Uitvoeren als administrator.
Als u het uitvoeringsbeleid voor elk bereik in de volgorde van prioriteit wilt weergeven, gebruikt u Get-ExecutionPolicy -List. Als u het effectieve uitvoeringsbeleid voor uw PowerShell-sessie Get-ExecutionPolicy zonder parameters wilt zien.
Voorbeelden
Voorbeeld 1: Een uitvoeringsbeleid instellen
In dit voorbeeld ziet u hoe u het uitvoeringsbeleid voor de lokale computer instelt.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine RemoteSigned
De Set-ExecutionPolicy cmdlet maakt gebruik van de parameter ExecutionPolicy om het RemoteSigned-beleid op te geven. Met de parameter Bereik geeft u de standaardwaarde voor het bereik op, LocalMachine. Gebruik de Get-ExecutionPolicy cmdlet met de parameter List om de beleidsinstellingen voor uitvoering weer te geven.
Voorbeeld 2: Een uitvoeringsbeleid instellen dat conflicteert met een groepsbeleid
Met deze opdracht wordt geprobeerd het uitvoeringsbeleid van het LocalMachine-bereik in te stellen op Beperkt. LocalMachine is restrictiever, maar is niet het effectieve beleid omdat het conflicteert met een groepsbeleid. Het beperkte beleid wordt naar het register hive HKEY_LOCAL_MACHINE geschreven.
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
De Set-ExecutionPolicy cmdlet maakt gebruik van de parameter ExecutionPolicy om het beperkte beleid op te geven. Met de parameter Bereik geeft u de standaardwaarde voor het bereik op, LocalMachine.
De Get-ChildItem cmdlet gebruikt de parameter Path bij de HKLM-provider om de registerlocatie op te geven.
Voorbeeld 3: Het uitvoeringsbeleid van een externe computer toepassen op een lokale computer
Met deze opdracht wordt het uitvoeringsbeleidsobject opgehaald van een externe computer en wordt het beleid ingesteld op de lokale computer. Get-ExecutionPolicy verzendt een Microsoft.PowerShell.ExecutionPolicy-object omlaag in de pijplijn. Set-ExecutionPolicy accepteert pijplijninvoer en vereist niet de parameter ExecutionPolicy .
PS> Invoke-Command -ComputerName Server01 -ScriptBlock { Get-ExecutionPolicy } | Set-ExecutionPolicy
De Invoke-Command cmdlet wordt uitgevoerd op de lokale computer en verzendt de ScriptBlock naar de externe computer. De parameter ComputerName geeft de externe computer, Server01. De parameter ScriptBlock wordt uitgevoerd Get-ExecutionPolicy op de externe computer. Het Get-ExecutionPolicy object wordt naar de Set-ExecutionPolicypijplijn verzonden.
Set-ExecutionPolicy past het uitvoeringsbeleid toe op het standaardbereik van de lokale computer, LocalMachine.
Voorbeeld 4: Het bereik voor een uitvoeringsbeleid instellen
In dit voorbeeld ziet u hoe u een uitvoeringsbeleid instelt voor een opgegeven bereik, CurrentUser. Het bereik CurrentUser is alleen van invloed op de gebruiker die dit bereik instelt.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser AllSigned
LocalMachine RemoteSigned
Set-ExecutionPolicy gebruikt de parameter ExecutionPolicy om het AllSigned-beleid op te geven.
Met de parameter Bereik geeft u de CurrentUser op. Gebruik de Get-ExecutionPolicy cmdlet met de parameter List om de beleidsinstellingen voor uitvoering weer te geven.
Het effectieve uitvoeringsbeleid voor de gebruiker wordt AllSigned.
Voorbeeld 5: Het uitvoeringsbeleid voor de huidige gebruiker verwijderen
In dit voorbeeld ziet u hoe u het niet-gedefinieerde uitvoeringsbeleid gebruikt om een uitvoeringsbeleid voor een opgegeven bereik te verwijderen.
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
Set-ExecutionPolicy gebruikt de parameter ExecutionPolicy om het niet-gedefinieerde beleid op te geven.
Met de parameter Bereik geeft u de CurrentUser op. Gebruik de Get-ExecutionPolicy cmdlet met de parameter List om de beleidsinstellingen voor uitvoering weer te geven.
Voorbeeld 6: Het uitvoeringsbeleid voor de huidige PowerShell-sessie instellen
Het bereik Proces is alleen van invloed op de huidige PowerShell-sessie. Het uitvoeringsbeleid wordt opgeslagen in de omgevingsvariabele $env:PSExecutionPolicyPreference en wordt verwijderd wanneer de sessie wordt gesloten.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope Process
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process AllSigned
CurrentUser RemoteSigned
LocalMachine RemoteSigned
De Set-ExecutionPolicy parameter ExecutionPolicy wordt gebruikt om het AllSigned-beleid op te geven. Met de parameter Bereik geeft u de waardeproces op. Gebruik de Get-ExecutionPolicy cmdlet met de parameter List om de beleidsinstellingen voor uitvoering weer te geven.
Voorbeeld 7: Een script deblokkeren om het uit te voeren zonder het uitvoeringsbeleid te wijzigen
In dit voorbeeld ziet u hoe het uitvoeringsbeleid RemoteSigned voorkomt dat u niet-ondertekende scripts uitvoert.
Een aanbevolen procedure is om de code van het script te lezen en te controleren of het veilig is voordat u de Unblock-File cmdlet gebruikt. De Unblock-File cmdlet deblokkert scripts zodat ze kunnen worden uitgevoerd, maar wijzigt het uitvoeringsbeleid niet.
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:
De Set-ExecutionPolicy parameter ExecutionPolicy wordt gebruikt om het RemoteSigned-beleid op te geven. Het beleid is ingesteld voor het standaardbereik LocalMachine.
De Get-ExecutionPolicy cmdlet laat zien dat RemoteSigned het effectieve uitvoeringsbeleid is voor de huidige PowerShell-sessie.
Het Start-ActivityTracker.ps1 script wordt uitgevoerd vanuit de huidige map. Het script wordt geblokkeerd door RemoteSigned omdat het script niet digitaal is ondertekend.
In dit voorbeeld is de code van het script gecontroleerd en geverifieerd als veilig om uit te voeren. De Unblock-File cmdlet gebruikt de parameter Path om het script te deblokkeren.
Als u wilt controleren of Unblock-File het uitvoeringsbeleid niet is gewijzigd, Get-ExecutionPolicy geeft u het effectieve uitvoeringsbeleid RemoteSigned weer.
Het script Start-ActivityTracker.ps1 wordt uitgevoerd vanuit de huidige map. Het script wordt uitgevoerd omdat het is opgeheven door de Unblock-File cmdlet.
Parameters
Hiermee wordt u gevraagd om bevestiging voordat u de cmdlet uitvoert.
| Type: | SwitchParameter |
| Aliases: | cf |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Hiermee geeft u het uitvoeringsbeleid. Als er geen groepsbeleid is en het uitvoeringsbeleid van elk bereik is ingesteld op Niet-gedefinieerd, wordt Restricted het effectieve beleid voor alle gebruikers.
De acceptabele uitvoeringsbeleidswaarden zijn als volgt:
- AllSigned. Vereist dat alle scripts en configuratiebestanden zijn ondertekend door een vertrouwde uitgever, inclusief scripts die zijn geschreven op de lokale computer.
- Bypass. Er wordt niets geblokkeerd en er zijn geen waarschuwingen of prompts.
- Standaardinstelling. Hiermee stelt u het standaarduitvoeringsbeleid in. Beperkt voor Windows-clients of RemoteSigned voor Windows-servers.
- RemoteSigned. Vereist dat alle scripts en configuratiebestanden die zijn gedownload van internet, zijn ondertekend door een vertrouwde uitgever. Het standaarduitvoeringsbeleid voor Windows-servercomputers.
- Beperkt. Laadt geen configuratiebestanden of voert scripts uit. Het standaarduitvoeringsbeleid voor Windows-clientcomputers.
- Niet gedefinieerd. Er is geen uitvoeringsbeleid ingesteld voor het bereik. Hiermee verwijdert u een toegewezen uitvoeringsbeleid uit een bereik dat niet is ingesteld door een groepsbeleid. Als het uitvoeringsbeleid in alle bereiken niet gedefinieerd is, is het effectieve uitvoeringsbeleid beperkt.
- Onbeperkt. Vanaf PowerShell 6.0 is dit het standaarduitvoeringsbeleid voor niet-Windows-computers en kan niet worden gewijzigd. Laadt alle configuratiebestanden en voert alle scripts uit. Als u een niet-ondertekend script uitvoert dat is gedownload van internet, wordt u gevraagd om toestemming voordat het wordt uitgevoerd.
| Type: | ExecutionPolicy |
| Accepted values: | AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined, Unrestricted |
| Position: | 0 |
| Default value: | None |
| Accept pipeline input: | True |
| Accept wildcard characters: | False |
Onderdrukt alle bevestigingsprompts. Wees voorzichtig met deze parameter om onverwachte resultaten te voorkomen.
| Type: | SwitchParameter |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Hiermee geeft u het bereik dat wordt beïnvloed door een uitvoeringsbeleid. Het standaardbereik is LocalMachine.
Het effectieve uitvoeringsbeleid wordt als volgt bepaald door de volgorde van prioriteit:
- MachinePolicy. Ingesteld door een groepsbeleid voor alle gebruikers van de computer.
- UserPolicy. Ingesteld door een groepsbeleid voor de huidige gebruiker van de computer.
- Proces. Is alleen van invloed op de huidige PowerShell-sessie.
- CurrentUser. Is alleen van invloed op de huidige gebruiker.
- LocalMachine. Standaardbereik dat van invloed is op alle gebruikers van de computer.
Het procesbereik is alleen van invloed op de huidige PowerShell-sessie. Het uitvoeringsbeleid wordt opgeslagen in de omgevingsvariabele $env:PSExecutionPolicyPreference, in plaats van het register. Wanneer de PowerShell-sessie wordt gesloten, worden de variabele en waarde verwijderd.
Uitvoeringsbeleid voor het CurrentUser-bereik wordt geschreven naar de registercomponent HKEY_LOCAL_USER.
Uitvoeringsbeleid voor het LocalMachine-bereik wordt geschreven naar de registercomponent HKEY_LOCAL_MACHINE.
| Type: | ExecutionPolicyScope |
| Accepted values: | CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy |
| Position: | 1 |
| Default value: | LocalMachine |
| Accept pipeline input: | True |
| Accept wildcard characters: | False |
Hiermee wordt weergegeven wat er zou gebeuren als u de cmdlet uitvoert. De cmdlet wordt niet uitgevoerd.
| Type: | SwitchParameter |
| Aliases: | wi |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Invoerwaarden
Microsoft.PowerShell.ExecutionPolicy, System.String
U kunt een uitvoeringsbeleidsobject of een tekenreeks met de naam van een uitvoeringsbeleid doorsluisen naar Set-ExecutionPolicy.
Uitvoerwaarden
None
Set-ExecutionPolicy retourneert geen uitvoer.
Notities
Set-ExecutionPolicy wijzigt de bereiken MachinePolicy en UserPolicy niet, omdat ze zijn ingesteld op groepsbeleid.
Set-ExecutionPolicyoverschrijft geen groepsbeleid, zelfs als de gebruikersvoorkeur meer beperkend is dan het beleid.
Als de groepsbeleid Scriptuitvoering inschakelen is ingeschakeld voor de computer of gebruiker, wordt de voorkeur van de gebruiker opgeslagen, maar is deze niet effectief. PowerShell geeft een bericht weer waarin het conflict wordt uitgelegd.
Verwante koppelingen
Feedback
Feedback verzenden en weergeven voor