Set-ExecutionPolicy
Beállítja a PowerShell végrehajtási szabályzatait Windows rendszerű számítógépeken.
Syntax
All
Set-ExecutionPolicy
[-ExecutionPolicy] <ExecutionPolicy>
[[-Scope] <ExecutionPolicyScope>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
A Set-ExecutionPolicy parancsmag módosítja a Windows rendszerű számítógépek PowerShell-végrehajtási szabályzatait. További információért lásd az about_Execution_Policies részt .
A PowerShell 6.0-tól kezdve nem Windows rendszerű számítógépek esetén az alapértelmezett végrehajtási szabályzat Unrestricted, és nem módosítható. A Set-ExecutionPolicy parancsmag elérhető, de a PowerShell egy 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 digitálisan alá kell-e írni.
A Set-ExecutionPolicy parancsmag alapértelmezett hatóköre LocalMachine, amely a számítógépet használó összes felhasználót érinti. A LocalMachinevégrehajtási szabályzatának módosításához indítsa el a PowerShellt a Futtatás rendszergazdaként.
Az egyes hatókörök végrehajtási szabályzatainak megjelenítéséhez használja a Get-ExecutionPolicy -List. A PowerShell-munkamenet érvényes végrehajtási szabályzatának megtekintéséhez használja a Get-ExecutionPolicy paraméterek nélkül.
Note
A végrehajtási szabályzatot csoportházirenddel is beállíthatja. Ha egy csoportházirend be van állítva, az felülbírálja a végrehajtási szabályzat helyi beállítását. Windows PowerShell 5.1- és PowerShell 6.0-s és újabb verziói különböző helyeken tárolják a végrehajtási szabályzat beállításait, és külön vannak kezelve. A Windows PowerShell (powershell.exe) beállításai nincsenek hatással a PowerShellre (pwsh.exe).
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 Lista 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 Restricted.
LocalMachine szigorúbb, de nem hatékony szabályzat, mert ütközik egy csoportházirenddel.
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
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 küld egy Microsoft.PowerShell.ExecutionPolicy objektumot a folyamaton.
Set-ExecutionPolicy elfogadja a folyamatbemenetet, és nem igényel 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 ScriptBlock a távoli számítógépre. A ComputerName paraméter határozza meg a távoli számítógépet, Server01. A ScriptBlock paraméter Get-ExecutionPolicy fut a távoli számítógépen. A Get-ExecutionPolicy objektumot a rendszer elküldi a folyamaton 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 a hatókört állító felhasználót érinti.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser AllSigned
LocalMachine RemoteSigned
Set-ExecutionPolicy a ExecutionPolicy paramétert használja a AllSigned szabályzat megadásához.
A Hatókör paraméter határozza meg a CurrentUser. A végrehajtási szabályzat beállításainak megtekintéséhez használja a Get-ExecutionPolicy parancsmagot a Lista paraméterrel.
A felhasználó érvényes végrehajtási szabályzata AllSignedlesz.
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 adott hatókörhöz a végrehajtási szabályzat használatával Undefined .
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSigned
Set-ExecutionPolicy a ExecutionPolicy paramétert használja a Undefined szabályzat megadásához. A Hatókör paraméter határozza meg a CurrentUser. A végrehajtási szabályzat beállításainak megtekintéséhez használja a Get-ExecutionPolicy parancsmagot a Lista 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 $Env:PSExecutionPolicyPreference környezeti változóban 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 az ExecutionPolicy paramétert használja a AllSigned szabályzat megadásához. A Hatókör paraméter a Processértéket adja meg. A végrehajtási szabályzat beállításainak megtekintéséhez használja a Get-ExecutionPolicy parancsmagot a Lista 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ályzata az aláíratlan szkriptek futtatását.
Ajánlott eljárás a szkript kódjának elolvasása és annak ellenőrzése, hogy biztonságos-e , mielőtt a Unblock-File parancsmagot használnánk. 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 az 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 a RemoteSigned az aktuális PowerShell-munkamenet tényleges végrehajtási szabályzata.
A Start-ActivityTracker.ps1 szkript az aktuális könyvtárból lesz végrehajtva. A szkriptet a RemoteSigned blokkolja, mert a szkript nincs digitálisan aláírva.
Ebben a példában a szkript kódját átvizsgálták, és biztonságosnak bizonyult. A Unblock-File parancsmag a Path paramétert használja a szkript letiltásának feloldásához.
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 Start-ActivityTracker.ps1 szkript az aktuális könyvtárból lesz végrehajtva. A szkript azért kezd el futni, mert a Unblock-File parancsmag feloldotta.
Paraméterek
-Confirm
Megerősítést kér a parancsmag futtatása előtt.
Paramétertulajdonságok
| Típus: | SwitchParameter |
| Alapértelmezett érték: | False |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
| Aliasok: | Cf |
Paraméterkészletek
(All)
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | 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 Undefinedvan beállítva, akkor Restricted lesz az összes felhasználóra érvényes szabályzat.
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.RestrictedWindows-ügyfelek vagy Windows-kiszolgálókRemoteSignedesetén. -
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örbenUndefined, a tényleges végrehajtási szabályzatRestricted. -
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.
Paramétertulajdonságok
| Típus: | ExecutionPolicy |
| Alapértelmezett érték: | None |
| Elfogadott értékek: | AllSigned, Bypass, Default, RemoteSigned, Restricted, Undefined, Unrestricted |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
(All)
| Position: | 0 |
| Kötelező: | True |
| Folyamatból származó érték: | True |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | 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.
Paramétertulajdonságok
| Típus: | SwitchParameter |
| Alapértelmezett érték: | False |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
(All)
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-Scope
Meghatározza a végrehajtási szabályzat által érintett hatókört. Az alapértelmezett hatókör a LocalMachine. A paraméter a következő értékeket fogadja el:
-
MachinePolicy– Csoportházirend szerint állítva a számítógép összes felhasználója számára -
UserPolicy– Csoportházirend szerint állítja be a számítógép aktuális felhasználóját -
Process– Csak az aktuális PowerShell-munkamenetet érinti -
CurrentUser– Csak az aktuális felhasználót érinti -
LocalMachine– Alapértelmezett hatókör, amely a számítógép összes felhasználóját érinti
Note
MachinePolicy és UserPolicy csoportházirendek szerint vannak beállítva. Ha a hatókört ezen értékek valamelyikére próbálja beállítani, a PowerShell hibaüzenetet jelenít meg arról, hogy a hatókört csoportházirend állítja be, és nem módosítható.
Ha a végrehajtási szabályzatot nem csoportházirend határozza meg, a tényleges végrehajtási szabályzatot az alábbi sorrend határozza meg:
-
Process- Legmagasabb prioritás -
CurrentUser- Második legmagasabb prioritás -
LocalMachine- Legalacsonyabb elsőbbség
A Végrehajtási szabályzatok PowerShell-tárolóival kapcsolatos további információkért tekintse meg a NOTES szakaszt.
Paramétertulajdonságok
| Típus: | ExecutionPolicyScope |
| Alapértelmezett érték: | LocalMachine |
| Elfogadott értékek: | CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
(All)
| Position: | 1 |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | True |
| Fennmaradó argumentumokból származó érték: | False |
-WhatIf
Megjeleníti, mi történne, ha a parancsmag futna. A parancsprogram nem lett futtatva.
Paramétertulajdonságok
| Típus: | SwitchParameter |
| Alapértelmezett érték: | False |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
| Aliasok: | Wi |
Paraméterkészletek
(All)
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
CommonParameters
Ez a parancsmag a következő gyakori paramétereket támogatja: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction és -WarningVariable. További információért lásd about_CommonParameters.
Bevitelek
ExecutionPolicy
A parancsmaghoz végrehajtási házirend-objektumot is csövezhet.
String
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-ExecutionPolicya hatókörök és UserPolicy a MachinePolicy hatókörök nem módosíthatók, 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 végrehajtási szabályzatot nem csoportházirend határozza meg, a tényleges végrehajtási szabályzatot az alábbi sorrend határozza meg:
-
Process- A legmagasabb prioritás. AProcesshatókör csak az aktuális PowerShell-munkamenetre van hatással. A végrehajtási szabályzat a beállításjegyzék helyett a környezeti változóba$Env:PSExecutionPolicyPreferencelesz mentve. A PowerShell-munkamenet bezárásakor a változó és az érték törlődik. -
CurrentUser- A második legmagasabb prioritás. A beállítás a felhasználóspecifikuspowershell.config.jsonfájlban van tárolva. -
LocalMachine- A legalacsonyabb elsőbbséget. A beállítás a$PSHOME/powershell.config.jsonfájlban van tárolva.
További információ a powershell.config.json fájlról: about_PowerShell_Config.