Set-ExecutionPolicy
Anger PowerShell-körningsprinciper för Windows-datorer.
Syntax
Set-ExecutionPolicy
[-ExecutionPolicy] <ExecutionPolicy>
[[-Scope] <ExecutionPolicyScope>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Cmdleten Set-ExecutionPolicy
ändrar PowerShell-körningsprinciper för Windows-datorer. Mer information finns i about_Execution_Policies.
Från och med PowerShell 6.0 för icke-Windows-datorer är Unrestricted
standardkörningsprincipen och kan inte ändras. Cmdleten Set-ExecutionPolicy
är tillgänglig, men PowerShell visar ett konsolmeddelande om att den inte stöds.
En körningsprincip är en del av PowerShell-säkerhetsstrategin. Körningsprinciper avgör om du kan läsa in konfigurationsfiler, till exempel din PowerShell-profil eller köra skript. Och om skript måste signeras digitalt innan de körs.
Cmdletens Set-ExecutionPolicy
standardomfång är LocalMachine
, vilket påverkar alla som använder datorn. Om du vill ändra körningsprincipen för LocalMachine
startar du PowerShell med Kör som administratör.
Om du vill visa körningsprinciperna för varje omfång använder du Get-ExecutionPolicy -List
. Om du vill se den effektiva körningsprincipen för din PowerShell-session använder Get-ExecutionPolicy
du utan parametrar.
Exempel
Exempel 1: Ange en körningsprincip
Det här exemplet visar hur du anger körningsprincipen för den lokala datorn.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine RemoteSigned
Cmdleten Set-ExecutionPolicy
använder parametern ExecutionPolicy för att ange RemoteSigned
principen. Parametern Omfång anger standardomfångsvärdet . LocalMachine
Om du vill visa inställningarna för körningsprincipen använder du cmdleten Get-ExecutionPolicy
med parametern Lista .
Exempel 2: Ange en körningsprincip som står i konflikt med en grupprincip
Det här kommandot försöker ange LocalMachine
omfångets körningsprincip till Restricted
.
LocalMachine
är mer restriktiv, men är inte den effektiva principen eftersom den står i konflikt med en grupprincip. Principen Restricted
skrivs till registreringsdatafilen HKEY_LOCAL_MACHINE
.
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
Cmdleten Set-ExecutionPolicy
använder parametern ExecutionPolicy för att ange Restricted
principen. Parametern Omfång anger standardomfångsvärdet . LocalMachine
Cmdleten Get-ChildItem
använder parametern Path med enheten HKLM:
för att ange registerplats.
Exempel 3: Tillämpa körningsprincipen från en fjärrdator på en lokal dator
Det här kommandot hämtar körningsprincipobjektet från en fjärrdator och anger principen på den lokala datorn. Get-ExecutionPolicy
skickar ett Microsoft.PowerShell.ExecutionPolicy-objekt nedåt i pipelinen. Set-ExecutionPolicy
accepterar pipelineindata och kräver inte parametern ExecutionPolicy .
Invoke-Command -ComputerName Server01 -ScriptBlock { Get-ExecutionPolicy } | Set-ExecutionPolicy
Cmdleten Invoke-Command
körs på den lokala datorn och skickar ScriptBlock till fjärrdatorn. Parametern ComputerName anger fjärrdatorn Server01. Parametern ScriptBlock körs Get-ExecutionPolicy
på fjärrdatorn. Objektet Get-ExecutionPolicy
skickas ned pipelinen Set-ExecutionPolicy
till .
Set-ExecutionPolicy
tillämpar körningsprincipen på den lokala datorns standardomfång, LocalMachine
.
Exempel 4: Ange omfånget för en körningsprincip
Det här exemplet visar hur du anger en körningsprincip för ett angivet omfång, CurrentUser
. Omfånget CurrentUser
påverkar bara den användare som anger det här omfånget.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser AllSigned
LocalMachine RemoteSigned
Set-ExecutionPolicy
använder parametern ExecutionPolicy för att ange AllSigned
principen.
Parametern Omfång anger CurrentUser
. Om du vill visa inställningarna för körningsprincipen använder du cmdleten Get-ExecutionPolicy
med parametern Lista .
Den effektiva körningsprincipen för användaren blir AllSigned
.
Exempel 5: Ta bort körningsprincipen för den aktuella användaren
Det här exemplet visar hur du använder Undefined
körningsprincipen för att ta bort en körningsprincip för ett angivet omfång.
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
Set-ExecutionPolicy
använder parametern ExecutionPolicy för att ange Undefined
principen. Parametern Omfång anger CurrentUser
. Om du vill visa inställningarna för körningsprincipen använder du cmdleten Get-ExecutionPolicy
med parametern Lista .
Exempel 6: Ange körningsprincipen för den aktuella PowerShell-sessionen
Omfånget Process
påverkar bara den aktuella PowerShell-sessionen. Körningsprincipen sparas i miljövariabeln $env:PSExecutionPolicyPreference
och tas bort när sessionen stängs.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope Process
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process AllSigned
CurrentUser RemoteSigned
LocalMachine RemoteSigned
Set-ExecutionPolicy
Använder parametern ExecutionPolicy för att ange AllSigned
principen. Parametern Scope anger värdet Process
. Om du vill visa inställningarna för körningsprincipen använder du cmdleten Get-ExecutionPolicy
med parametern Lista .
Exempel 7: Avblockera ett skript för att köra det utan att ändra körningsprincipen
Det här exemplet visar hur RemoteSigned
körningsprincipen hindrar dig från att köra osignerade skript.
Bästa praxis är att läsa skriptets kod och kontrollera att den är säker innan du använder cmdleten Unblock-File
. Cmdleten Unblock-File
avblockar skript så att de kan köras, men ändrar inte körningsprincipen.
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:
Set-ExecutionPolicy
Använder parametern ExecutionPolicy för att ange RemoteSigned
principen. Principen anges för standardomfånget . LocalMachine
Cmdleten Get-ExecutionPolicy
visar att är RemoteSigned
den effektiva körningsprincipen för den aktuella PowerShell-sessionen.
RemoteSigned Start-ActivityTracker.ps1 script is executed from the current directory. The script is blocked by
eftersom skriptet inte är digitalt signerat.
I det här exemplet har skriptets kod granskats och verifierats som säker att köra. Cmdleten Unblock-File
använder parametern Path för att avblockera skriptet.
Om du vill kontrollera att Unblock-File
körningsprincipen Get-ExecutionPolicy
inte har ändrats visar du principen för effektiv körning, RemoteSigned
.
Skriptet Start-ActivityTracker.ps1
körs från den aktuella katalogen. Skriptet börjar köras eftersom det avblockerades av cmdleten Unblock-File
.
Parametrar
-Confirm
Uppmanar dig att bekräfta innan du kör cmdleten.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ExecutionPolicy
Anger körningsprincipen. Om det inte finns några grupprinciper och varje omfångs körningsprincip är inställd på Undefined
blir Restricted
den effektiva principen för alla användare.
De acceptabla körningsprincipvärdena är följande:
AllSigned
. Kräver att alla skript och konfigurationsfiler signeras av en betrodd utgivare, inklusive skript som skrivits på den lokala datorn.Bypass
. Ingenting blockeras och det finns inga varningar eller uppmaningar.Default
. Anger standardkörningsprincipen.Restricted
för Windows-klienter ellerRemoteSigned
för Windows-servrar.RemoteSigned
. Kräver att alla skript och konfigurationsfiler som laddas ned från Internet signeras av en betrodd utgivare. Standardkörningsprincipen för Windows-serverdatorer.Restricted
. Läser inte in konfigurationsfiler eller kör skript. Standardkörningsprincipen för Windows-klientdatorer.Undefined
. Ingen körningsprincip har angetts för omfånget. Tar bort en tilldelad körningsprincip från ett omfång som inte anges av en grupprincip. Om körningsprincipen i alla omfång ärUndefined
ärRestricted
den effektiva körningsprincipen .Unrestricted
. Från och med PowerShell 6.0 är detta standardkörningsprincipen för icke-Windows-datorer och kan inte ändras. Läser in alla konfigurationsfiler och kör alla skript. Om du kör ett osignerat skript som har laddats ned från Internet uppmanas du att ange behörighet innan det körs.
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
Undertrycker alla bekräftelsemeddelanden. Var försiktig med den här parametern för att undvika oväntade resultat.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Scope
Anger omfånget som påverkas av en körningsprincip. Standardomfånget är LocalMachine
.
Den effektiva körningsprincipen bestäms av prioritetsordningen enligt följande:
MachinePolicy
– Anges av en grupprincip för alla användare av datornUserPolicy
– Anges av en grupprincip för den aktuella användaren av datornProcess
– Påverkar endast den aktuella PowerShell-sessionenLocalMachine
– Standardomfång som påverkar alla användare av datornCurrentUser
– Påverkar endast den aktuella användaren
Omfånget Process
påverkar bara den aktuella PowerShell-sessionen. Körningsprincipen sparas i miljövariabeln $env:PSExecutionPolicyPreference
i stället för registret. När PowerShell-sessionen stängs tas variabeln och värdet bort.
Körningsprinciper för omfånget CurrentUser
skrivs till registreringsdatafilen HKEY_LOCAL_USER
.
Körningsprinciper för omfånget LocalMachine
skrivs till registreringsdatafilen HKEY_LOCAL_MACHINE
.
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
Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Indata
Du kan skicka ett körningsprincipobjekt till den här cmdleten.
Du kan skicka en sträng som innehåller namnet på en körningsprincip till den här cmdleten.
Utdata
None
Den här cmdleten returnerar inga utdata.
Kommentarer
Set-ExecutionPolicy
ändrar inte omfången MachinePolicy
och UserPolicy
eftersom de anges av grupprinciper.
Set-ExecutionPolicy
åsidosätter inte en grupprincip, även om användarinställningarna är mer restriktiva än principen.
Om grupprincip Aktivera skriptkörning är aktiverat för datorn eller användaren sparas användarinställningen, men den är inte effektiv. PowerShell visar ett meddelande som förklarar konflikten.