Set-ExecutionPolicy
Beállítja a PowerShell végrehajtási szabályzatait Windows rendszerű számítógépeken.
Syntax
Set-ExecutionPolicy
[-ExecutionPolicy] <ExecutionPolicy>
[[-Scope] <ExecutionPolicyScope>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
A Set-ExecutionPolicy
parancsmag módosítja a PowerShell végrehajtási szabályzatait Windows rendszerű számítógépeken. További információ: about_Execution_Policies.
A Nem Windows rendszerű számítógépekhez készült PowerShell 6.0-tól kezdődően az alapértelmezett végrehajtási szabályzat nem Unrestricted
módosítható és nem módosítható. A Set-ExecutionPolicy
parancsmag elérhető, de a PowerShell egy olyan konzolüzenetet jelenít meg, amely nem támogatott.
A végrehajtási szabályzat a PowerShell biztonsági stratégiájának része. A végrehajtási szabályzatok határozzák meg, hogy betölthetők-e konfigurációs fájlok, például a PowerShell-profil vagy futtathatók-e szkriptek. És azt is, hogy a szkripteket a futtatás előtt digitálisan alá kell-e írni.
A Set-ExecutionPolicy
parancsmag alapértelmezett hatóköre az LocalMachine
, amely a számítógépet használó összes felhasználót érinti. A végrehajtási szabályzat módosításához LocalMachine
indítsa el a PowerShellt a Futtatás Rendszergazda istratorként parancsmaggal.
Az egyes hatókörök végrehajtási szabályzatainak megjelenítéséhez használja a következőt Get-ExecutionPolicy -List
: . A PowerShell-munkamenet Get-ExecutionPolicy
érvényes végrehajtási szabályzatának megtekintéséhez használja paraméterek nélkül.
Példák
1. példa: Végrehajtási szabályzat beállítása
Ez a példa bemutatja, hogyan állíthatja be a végrehajtási szabályzatot a helyi számítógépen.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine RemoteSigned
A Set-ExecutionPolicy
parancsmag a ExecutionPolicy paramétert használja a RemoteSigned
szabályzat megadásához. A Hatókör paraméter az alapértelmezett hatókörértéket adja meg. LocalMachine
A végrehajtási szabályzat beállításainak megtekintéséhez használja a Get-ExecutionPolicy
parancsmagot a List paraméterrel.
2. példa: Csoportházirenddel ütköző végrehajtási szabályzat beállítása
Ez a parancs megkísérli beállítani a LocalMachine
hatókör végrehajtási szabályzatát a következőre Restricted
: .
LocalMachine
szigorúbb, de nem hatékony, mert ütközik egy csoportházirenddel. A Restricted
szabályzat a beállításjegyzék-hive-be HKEY_LOCAL_MACHINE
van írva.
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
A Set-ExecutionPolicy
parancsmag a ExecutionPolicy paramétert használja a Restricted
szabályzat megadásához. A Hatókör paraméter az alapértelmezett hatókörértéket adja meg. LocalMachine
A Get-ChildItem
parancsmag az Elérési út paramétert használja a meghajtóval a HKLM:
beállításjegyzék helyének megadásához.
3. példa: A végrehajtási szabályzat alkalmazása távoli számítógépről egy helyi számítógépre
Ez a parancs lekéri a végrehajtási szabályzat objektumát egy távoli számítógépről, és beállítja a házirendet a helyi számítógépen. Get-ExecutionPolicy
Egy Microsoft.PowerShell.ExecutionPolicy objektumot küld le a folyamatból. Set-ExecutionPolicy
fogadja a folyamatbemenetet, és nem igényli a ExecutionPolicy paramétert.
Invoke-Command -ComputerName Server01 -ScriptBlock { Get-ExecutionPolicy } | Set-ExecutionPolicy
A Invoke-Command
parancsmag végrehajtása a helyi számítógépen történik, és elküldi a ScriptBlockot a távoli számítógépre. A ComputerName paraméter a server01 távoli számítógépet adja meg. A ScriptBlock paraméter a távoli számítógépen fut Get-ExecutionPolicy
. Az Get-ExecutionPolicy
objektumot a rendszer elküldi a folyamatnak a Set-ExecutionPolicy
.
Set-ExecutionPolicy
a végrehajtási szabályzatot a helyi számítógép alapértelmezett hatókörére alkalmazza. LocalMachine
4. példa: Végrehajtási szabályzat hatókörének beállítása
Ez a példa bemutatja, hogyan állíthat be végrehajtási szabályzatot egy adott hatókörhöz. CurrentUser
A CurrentUser
hatókör csak azt a felhasználót érinti, aki ezt a hatókört beállítja.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser AllSigned
LocalMachine RemoteSigned
Set-ExecutionPolicy
A szabályzat megadásához a ExecutionPolicy paramétert AllSigned
használja.
A Hatókör paraméter a CurrentUser
. A végrehajtási szabályzat beállításainak megtekintéséhez használja a Get-ExecutionPolicy
parancsmagot a List paraméterrel.
A felhasználó tényleges végrehajtási szabályzata lesz AllSigned
.
5. példa: Az aktuális felhasználó végrehajtási szabályzatának eltávolítása
Ez a példa bemutatja, hogyan távolíthat el végrehajtási szabályzatot egy Undefined
adott hatókörhöz a végrehajtási szabályzat használatával.
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
Set-ExecutionPolicy
A szabályzat megadásához a ExecutionPolicy paramétert Undefined
használja. A Hatókör paraméter a CurrentUser
. A végrehajtási szabályzat beállításainak megtekintéséhez használja a Get-ExecutionPolicy
parancsmagot a List paraméterrel.
6. példa: Az aktuális PowerShell-munkamenet végrehajtási szabályzatának beállítása
A Process
hatókör csak az aktuális PowerShell-munkamenetre van hatással. A végrehajtási szabályzat a környezeti változóban $env:PSExecutionPolicyPreference
lesz mentve, és a munkamenet bezárásakor törlődik.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope Process
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process AllSigned
CurrentUser RemoteSigned
LocalMachine RemoteSigned
A Set-ExecutionPolicy
rendszer a ExecutionPolicy paramétert használja a AllSigned
szabályzat megadásához. A Hatókör paraméter megadja az értéket Process
. A végrehajtási szabályzat beállításainak megtekintéséhez használja a Get-ExecutionPolicy
parancsmagot a List paraméterrel.
7. példa: Szkript blokkolásának feloldása a futtatáshoz a végrehajtási szabályzat módosítása nélkül
Ez a példa bemutatja, hogyan akadályozza meg a RemoteSigned
végrehajtási szabályzat az aláíratlan szkriptek futtatását.
A parancsmag használata Unblock-File
előtt ajánlott elolvasni a szkript kódját, és ellenőrizni, hogy biztonságos-e. A Unblock-File
parancsmag feloldja a szkriptek letiltását, így futtathatók, de nem módosítja a végrehajtási szabályzatot.
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:
A Set-ExecutionPolicy
rendszer a ExecutionPolicy paramétert használja a RemoteSigned
szabályzat megadásához. A házirend az alapértelmezett hatókörhöz van beállítva. LocalMachine
A Get-ExecutionPolicy
parancsmag azt mutatja, hogy RemoteSigned
ez az aktuális PowerShell-munkamenet tényleges végrehajtási szabályzata.
A Start-ActivityTracker.ps1 script is executed from the current directory. The script is blocked by
RemoteSigned, mert a szkript nincs digitálisan aláírva.
Ebben a példában a szkript kódját ellenőrizték és biztonságosként ellenőrizték. A Unblock-File
parancsmag a Path paraméter használatával oldja fel a szkript letiltását.
Annak ellenőrzéséhez, hogy Unblock-File
nem módosította-e a végrehajtási szabályzatot, Get-ExecutionPolicy
megjeleníti az érvényes végrehajtási szabályzatot. RemoteSigned
A szkript Start-ActivityTracker.ps1
az aktuális könyvtárból lesz végrehajtva. A szkript elkezd futni, mert a parancsmag feloldotta a Unblock-File
letiltást.
Paraméterek
-Confirm
Jóváhagyást kér a parancsmag futtatása előtt.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ExecutionPolicy
A végrehajtási szabályzatot adja meg. Ha nincsenek csoportházirendek, és az egyes hatókörök végrehajtási szabályzata be van állítva Undefined
, akkor Restricted
az összes felhasználóra érvényes szabályzat lesz.
Az elfogadható végrehajtási szabályzatértékek a következők:
AllSigned
. Megköveteli, hogy az összes szkriptet és konfigurációs fájlt megbízható közzétevő írja alá, beleértve a helyi számítógépen írt szkripteket is.Bypass
. Semmi sem blokkolva, és nincsenek figyelmeztetések vagy kérések.Default
. Beállítja az alapértelmezett végrehajtási szabályzatot.Restricted
Windows-ügyfelekhez vagyRemoteSigned
Windows-kiszolgálókhoz.RemoteSigned
. Megköveteli, hogy az internetről letöltött összes szkriptet és konfigurációs fájlt megbízható közzétevő írja alá. A Windows server számítógépek alapértelmezett végrehajtási szabályzata.Restricted
. Nem tölt be konfigurációs fájlokat, és nem futtat szkripteket. A Windows-ügyfélszámítógépek alapértelmezett végrehajtási szabályzata.Undefined
. A hatókörhöz nincs végrehajtási szabályzat beállítva. Eltávolít egy hozzárendelt végrehajtási szabályzatot egy olyan hatókörből, amelyet nem csoportházirend állított be. Ha a végrehajtási szabályzat minden hatókörben azUndefined
, akkor a végrehajtási szabályzat érvényes.Restricted
Unrestricted
. A PowerShell 6.0-tól kezdődően ez a nem Windows rendszerű számítógépek alapértelmezett végrehajtási szabályzata, és nem módosítható. Betölti az összes konfigurációs fájlt, és futtatja az összes szkriptet. Ha az internetről letöltött aláíratlan szkriptet futtat, a rendszer a futtatás előtt engedélyt kér.
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
Letiltja az összes megerősítési kérést. A váratlan eredmények elkerülése érdekében körültekintően használja ezt a paramétert.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Scope
Meghatározza a végrehajtási szabályzat által érintett hatókört. Az alapértelmezett hatókör a következő LocalMachine
: .
A tényleges végrehajtási szabályzatot az alábbi sorrend határozza meg:
MachinePolicy
– Csoportházirend szerint a számítógép összes felhasználója számáraUserPolicy
– A számítógép aktuális felhasználójának csoportházirenddel történő beállításaProcess
– Csak az aktuális PowerShell-munkamenetet érintiLocalMachine
– Alapértelmezett hatókör, amely a számítógép összes felhasználóját érintiCurrentUser
– Csak az aktuális felhasználót érinti
A Process
hatókör csak az aktuális PowerShell-munkamenetre van hatással. A végrehajtási szabályzatot a rendszer a beállításjegyzék helyett a környezeti változóba $env:PSExecutionPolicyPreference
menti. A PowerShell-munkamenet bezárásakor a változó és az érték törlődik.
A hatókör végrehajtási szabályzatai a CurrentUser
beállításjegyzék-hive-be HKEY_LOCAL_USER
vannak írva.
A hatókör végrehajtási szabályzatai a LocalMachine
beállításjegyzék-hive-be HKEY_LOCAL_MACHINE
vannak írva.
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
Bemutatja, mi történne a parancsmag futtatásakor. A parancsmag nem fut.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Bevitelek
A parancsmaghoz végrehajtási házirend-objektumot is csövezhet.
Erre a parancsmagra egy végrehajtási szabályzat nevét tartalmazó sztringet csövezhet.
Kimenetek
None
Ez a parancsmag nem ad vissza kimenetet.
Jegyzetek
Set-ExecutionPolicy
nem módosítja a MachinePolicy
hatóköröket, UserPolicy
mert csoportházirendek szerint vannak beállítva.
Set-ExecutionPolicy
nem bírálja felül a csoportházirendet, még akkor sem, ha a felhasználói beállítások szigorúbbak, mint a szabályzat.
Ha a csoportházirend bekapcsolja a szkriptek végrehajtását a számítógépen vagy a felhasználón, a rendszer menti a felhasználói beállításokat, de nem érvényes. A PowerShell egy üzenetet jelenít meg, amely ismerteti az ütközést.