Set-ExecutionPolicy
Anger PowerShell-körningsprinciperna för Windows-datorer.
Syntax
All
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.
En exekveringsprincip ä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.
Standardomfånget för Set-ExecutionPolicy-cmdleten är LocalMachine, vilket påverkar alla som använder datorn. Om du vill ändra körningsprincipen för LocalMachinestartar 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 powershell-sessionen använder du Get-ExecutionPolicy utan parametrar.
Note
Körningsprincipen kan också anges av en grupprincip. Om en grupprincip har angetts åsidosätter den körningsprincipen som angetts lokalt. Windows PowerShell 5.1 och PowerShell 6.0 och senare lagrar du körningsprincipinställningen på olika platser och hanteras separat. Inställningarna för Windows PowerShell (powershell.exe) påverkar inte PowerShell (pwsh.exe).
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 princip. Parametern Scope anger standardomfångsvärdet LocalMachine. Om du vill visa körpolicyns inställningar använder du cmdleten Get-ExecutionPolicy med parametern och listan.
Exempel 2: Ange en körningsprincip som står i konflikt med en grupprincip
Det här kommandot försöker ange körningsprincipen för LocalMachine-omfånget till Restricted.
LocalMachine är mer restriktiv, men är inte den effektiva principen eftersom den står i konflikt med en grupprincip.
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
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 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.
Get-ExecutionPolicy-objektet skickas ned i pipelinen till Set-ExecutionPolicy.
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 princip.
Parametern Scope anger CurrentUser. Om du vill visa körpolicyns inställningar använder du cmdleten Get-ExecutionPolicy med parametern och listan.
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 princip. Parametern Scope anger CurrentUser. Om du vill visa körpolicyns inställningar använder du cmdleten Get-ExecutionPolicy med parametern och listan.
Exempel 6: Ange körningsprincipen för den aktuella PowerShell-sessionen
Omfånget Process påverkar endast 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 princip. Parametern Scope anger värdet Process. Om du vill visa körpolicyns inställningar använder du cmdleten Get-ExecutionPolicy med parametern och listan.
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 med hjälp av cmdleten Unblock-File. Cmdleten Unblock-File avblockerar skript så att de kan köras, men ändrar inte exekveringspolicyn.
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 princip. Policyn har angetts för standardomfånget, LocalMachine.
Cmdleten Get-ExecutionPolicy visar att RemoteSigned är gällande körningspolicy för den aktuella PowerShell-sessionen.
Skriptet Start-ActivityTracker.ps1 körs från den aktuella katalogen. Skriptet blockeras av RemoteSigned 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.
För att kontrollera att Unblock-File inte ändrade körningsprincipen visar Get-ExecutionPolicy den effektiva körningsprincipen 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.
Parameteregenskaper
| Typ: | SwitchParameter |
| Standardvärde: | False |
| Stöder jokertecken: | False |
| DontShow: | False |
| Alias: | jfr |
Parameteruppsättningar
(All)
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-ExecutionPolicy
Anger körningsprincipen. Om det inte finns några grupprinciper och varje omfångs körningsprincip är inställd på Undefinedblir 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. Ställer in standardutförandepolicyn.Restrictedför Windows-klienter ellerRemoteSignedför Windows-servrar. -
RemoteSigned. Kräver att alla skript och konfigurationsfiler som laddas ned från Internet är signerade 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 har angetts av en grupprincip. Om körningsprincipen i alla omfång ärUndefinedär den effektiva körningsprincipenRestricted. -
Unrestricted. 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.
Parameteregenskaper
| Typ: | ExecutionPolicy |
| Standardvärde: | None |
| Godkända värden: | AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined, Unrestricted |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | 0 |
| Obligatorisk: | True |
| Värde från pipeline: | True |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-Force
Undertrycker alla bekräftelseprompter. Var försiktig med den här parametern för att undvika oväntade resultat.
Parameteregenskaper
| Typ: | SwitchParameter |
| Standardvärde: | False |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
-Scope
Anger det omfång som påverkas av en körningsprincip. Standardomfånget är LocalMachine. Parametern accepterar följande värden:
-
MachinePolicy– Anges av en grupprincip för alla användare av datorn -
UserPolicy– Anges av en grupprincip för den aktuella användaren av datorn -
Process– Påverkar endast den aktuella PowerShell-sessionen -
CurrentUser– Påverkar endast den aktuella användaren -
LocalMachine– Standardomfång som påverkar alla användare av datorn
Note
MachinePolicy och UserPolicy anges av grupprinciper. Om du försöker ange omfånget till ett av dessa värden visar PowerShell ett felmeddelande om att omfånget anges av en grupprincip och inte kan ändras.
Om körningsprincipen inte definieras av en grupprincip bestäms den effektiva körningsprincipen av prioritetsordningen enligt följande:
-
Process- Högsta prioritet -
CurrentUser- Näst högsta prioritet -
LocalMachine- Lägsta prioritet
Mer information om hur PowerShell lagrar körningsprinciper finns i avsnittet ANTECKNINGAR .
Parameteregenskaper
| Typ: | ExecutionPolicyScope |
| Standardvärde: | LocalMachine |
| Godkända värden: | CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy |
| Stöder jokertecken: | False |
| DontShow: | False |
Parameteruppsättningar
(All)
| Position: | 1 |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | True |
| Värde från återstående argument: | False |
-WhatIf
Visar vad som skulle hända om kommandot körs. Cmdleten körs inte.
Parameteregenskaper
| Typ: | SwitchParameter |
| Standardvärde: | False |
| Stöder jokertecken: | False |
| DontShow: | False |
| Alias: | Wi |
Parameteruppsättningar
(All)
| Position: | Named |
| Obligatorisk: | False |
| Värde från pipeline: | False |
| Värde från pipeline efter egenskapsnamn: | False |
| Värde från återstående argument: | False |
CommonParameters
Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.
Indata
ExecutionPolicy
Du kan skicka ett körningsprincipobjekt till den här cmdleten.
String
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 kan inte ändra 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 körningsprincipen inte definieras av en grupprincip bestäms den effektiva körningsprincipen av prioritetsordningen enligt följande:
-
Process- Högsta prioritet. OmfångetProcesspåverkar endast den aktuella PowerShell-sessionen. Körningsprincipen sparas i miljövariabeln$Env:PSExecutionPolicyPreferencei stället för i registret. När PowerShell-sessionen stängs tas variabeln och värdet bort. -
CurrentUser- Näst högsta prioritet. Inställningen lagras iExecutionPolicyregistervärdet på:HKCU:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell -
LocalMachine- Lägsta prioritet. Inställningen lagras iExecutionPolicyregistervärdet på:HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell