about_Execution_Policies
Rövid leírás
Ismerteti a PowerShell végrehajtási szabályzatokat, és ismerteti azok kezelését.
Hosszú leírás
A PowerShell végrehajtási szabályzata egy biztonsági funkció, amely szabályozza, hogy a PowerShell milyen feltételek mellett tölt be konfigurációs fájlokat, és parancsfájlokat futtat. Ez a funkció segít megakadályozni a rosszindulatú szkriptek végrehajtását.
Windows rendszerű számítógépen beállíthat végrehajtási szabályzatot a helyi számítógéphez, az aktuális felhasználóhoz vagy egy adott munkamenethez. Csoportházirend-beállítással is beállíthat végrehajtási szabályzatokat számítógépekre és felhasználókra.
A helyi számítógép és az aktuális felhasználó végrehajtási szabályzatai a beállításjegyzékben vannak tárolva. A PowerShell-profilban nem kell végrehajtási szabályzatokat beállítania. Egy adott munkamenet végrehajtási szabályzata csak a memóriában van tárolva, és a munkamenet bezárásakor elveszik.
A végrehajtási szabályzat nem olyan biztonsági rendszer, amely korlátozza a felhasználói műveleteket. A felhasználók például egyszerűen bypass beírhatják a parancsprogram tartalmát a parancssorba, ha nem tudnak szkriptet futtatni. Ehelyett a végrehajtási szabályzat segít a felhasználóknak alapszintű szabályokat beállítani, és meggátolni őket abban, hogy véletlenül megsértse őket.
PowerShell-végrehajtási szabályzatok
A PowerShell végrehajtási szabályzatai a következők:
AllSigned
- A szkriptek futtathatók.
- 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.
- Kéri, mielőtt olyan közzétevőktől futtat szkripteket, amelyeket még nem minősített megbízhatóként vagy nem megbízhatóként.
- Fennáll a veszélye, hogy aláírt, de rosszindulatú szkriptek futnak.
Bypass
- Semmi sem blokkolva, és nincsenek figyelmeztetések vagy kérések.
- Ez a végrehajtási szabályzat olyan konfigurációkhoz készült, amelyekben egy PowerShell-szkript egy nagyobb alkalmazásba van beépítve, vagy olyan konfigurációkhoz, amelyekben a PowerShell egy saját biztonsági modellel rendelkező program alapja.
Default
- Beállítja a default végrehajtási szabályzatot.
- Restricted Windows-ügyfelek esetén.
- RemoteSigned windowsos kiszolgálókhoz.
RemoteSigned
- A default Windows server rendszerű számítógépek végrehajtási szabályzata.
- A szkriptek futtathatók.
- Digitális aláírást igényel egy megbízható közzétevőtől az internetről letöltött szkripteken és konfigurációs fájlokon, beleértve az e-maileket és a csevegőprogramokat.
- Nem igényel digitális aláírást a helyi számítógépen írt és az internetről nem letöltött szkripteken.
- Futtatja az internetről letöltött és nem aláírt szkripteket, ha a szkriptek nincsenek letiltva, például a
Unblock-File
parancsmag használatával. - Azzal a kockázattal jár, hogy nem aláírt szkripteket futtat az internettől eltérő forrásokból, és olyan aláírt szkripteket, amelyek rosszindulatúak lehetnek.
Restricted
- A default Windows rendszerű ügyfélszámítógépek végrehajtási szabályzata.
- Engedélyezi az egyes parancsokat, de nem engedélyezi a szkripteket.
- Megakadályozza az összes szkriptfájl futtatását, beleértve a formázási és konfigurációs fájlokat (
.ps1xml
), a modulszkriptfájlokat (.psm1
) és a PowerShell-profilokat (.ps1
).
Undefined
- Az aktuálisban scopenincs végrehajtási szabályzat beállítva.
- Ha a végrehajtási szabályzat minden hatókörben érvényes Undefined, akkor az érvényes végrehajtási szabályzat Restricted a Windows-ügyfelekre és a RemoteSigned for Windows Serverre érvényes.
Unrestricted
- Az aláíratlan szkriptek futtathatók. Fennáll a veszélye annak, hogy rosszindulatú szkripteket futtat.
- Figyelmezteti a felhasználót, mielőtt olyan szkripteket és konfigurációs fájlokat futtatna, amelyek nem a helyi intranetzónából származnak.
Feljegyzés
Az olyan rendszereken, amelyek nem különböztetik meg az univerzális elnevezési egyezmény (UNC) elérési útját az internetes útvonalaktól, előfordulhat, hogy az UNC-útvonal által azonosított szkriptek nem futtathatók a RemoteSigned végrehajtási szabályzattal.
Végrehajtási szabályzat scope
Olyan végrehajtási szabályzatot állíthat be, amely csak egy adott esetben scopeérvényes.
Az érvényes értékek a következőkMachinePolicy: Scope UserPolicy, ProcessCurrentUser és LocalMachine. A LocalMachine a default végrehajtási szabályzat beállításakor.
Az Scope értékek sorrendben vannak felsorolva. Az elsőbbséget élvező szabályzat akkor is érvényes az aktuális munkamenetben, ha egy szigorúbb szabályzatot alacsonyabb előnnyel állítottak be.
További információ: Set-ExecutionPolicy.
MachinePolicy
Csoportházirend szerint állítsa be a számítógép összes felhasználója számára.
UserPolicy
A számítógép aktuális felhasználójának csoportházirenddel történő beállítása.
Process
Az Processscope egyetlen hatással van az aktuális PowerShell-munkamenetre. 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.CurrentUser
A végrehajtási szabályzat csak az aktuális felhasználót érinti. A rendszer a beállításjegyzék HKEY_CURRENT_USER alkulcsában tárolja.
LocalMachine
A végrehajtási szabályzat az aktuális számítógép összes felhasználójára hatással van. A rendszer a beállításjegyzék HKEY_LOCAL_MACHINE alkulcsában tárolja.
Végrehajtási szabályzat kezelése a PowerShell-lel
Az aktuális PowerShell-munkamenet érvényes végrehajtási szabályzatának lekéréséhez használja a Get-ExecutionPolicy
parancsmagot.
A következő parancs lekéri az érvényes végrehajtási szabályzatot:
Get-ExecutionPolicy
Az aktuális munkamenetet érintő összes végrehajtási szabályzat lekérése és sorrendben való megjelenítése:
Get-ExecutionPolicy -List
Az eredmény a következő mintakimenethez hasonlóan néz ki:
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine AllSigned
Ebben az esetben az érvényes végrehajtási szabályzat RemoteSigned, mert az aktuális felhasználó végrehajtási szabályzata elsőbbséget élvez a helyi számítógép végrehajtási szabályzatával szemben.
Ha egy adott scopevégrehajtási szabályzatot szeretne lekérni, használja a Scope következő paramétert Get-ExecutionPolicy
: .
A következő parancs például lekéri a CurrentUserscope végrehajtási szabályzatát:
Get-ExecutionPolicy -Scope CurrentUser
A végrehajtási szabályzat módosítása
A Windows rendszerű számítógépen a PowerShell végrehajtási szabályzatának módosításához használja a Set-ExecutionPolicy
parancsmagot. A módosítás azonnal hatályba lép. Nem kell újraindítania a PowerShellt.
Ha a LocalMachine vagy a CurrentUser hatókörhöz állítja be a végrehajtási szabályzatot, a rendszer menti a módosítást a beállításjegyzékbe, és mindaddig érvényes marad, amíg újra nem módosítja.
Ha beállítja a végrehajtási szabályzatot a Processscopebeállításjegyzékben, az nem lesz mentve. A végrehajtási szabályzat az aktuális process és a gyermekfolyamatok bezárásáig megmarad.
Feljegyzés
A Windows Vista és a Windows újabb verzióiban a helyi számítógép végrehajtási szabályzatát módosító parancsok (LocalMachinescope) futtatásához indítsa el a PowerShellt a Futtatás rendszergazdaként beállítással.
A végrehajtási szabályzat módosítása:
Set-ExecutionPolicy -ExecutionPolicy <PolicyName>
Példa:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
A végrehajtási szabályzat beállítása egy adott esetben scope:
Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>
Példa:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
A végrehajtási szabályzat módosítására szolgáló parancsok sikeresek lehetnek, de még mindig nem módosítják a tényleges végrehajtási szabályzatot.
A helyi számítógép végrehajtási szabályzatát meghatározó parancsok például sikeresek lehetnek, de felül kell bírálni az aktuális felhasználó végrehajtási szabályzatát.
A végrehajtási szabályzat eltávolítása
Ha el szeretné távolítani egy adott scopevégrehajtási szabályzatot, állítsa a végrehajtási szabályzatot a következőre Undefined: .
Például a végrehajtási szabályzat eltávolítása a helyi számítógép összes felhasználója számára:
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine
A végrehajtási szabályzat eltávolítása a következőhöz Scope:
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Ha nincs végrehajtási szabályzat beállítva, scopeakkor a tényleges végrehajtási szabályzat Restricteda Windows-ügyfelek esetében érvényes default .
Másik szabályzat beállítása egy munkamenethez
A ExecutionPolicy paraméterrel powershell.exe
végrehajtási szabályzatot állíthat be egy új PowerShell-munkamenethez. A szabályzat csak az aktuális munkamenetet és a gyermek munkameneteket érinti.
Ha egy új munkamenet végrehajtási szabályzatát szeretné beállítani, indítsa el a PowerShellt a parancssorból, például cmd.exe
a PowerShellből, majd a végrehajtási szabályzat beállításához használja a ExecutionPolicy paramétert powershell.exe
.
Példa:
powershell.exe -ExecutionPolicy AllSigned
A beállított végrehajtási szabályzat nem a beállításjegyzékben van tárolva. Ehelyett a $env:PSExecutionPolicyPreference
környezeti változó tárolja. A változó törlődik, amikor bezárja azt a munkamenetet, amelyben a szabályzat be van állítva. A szabályzat nem módosítható a változó értékének szerkesztésével.
A munkamenet során a munkamenethez beállított végrehajtási szabályzat elsőbbséget élvez a helyi számítógép vagy az aktuális felhasználó beállításjegyzékében beállított végrehajtási szabályzattal szemben. Ez azonban nem elsőbbséget élvez a csoportházirend használatával beállított végrehajtási szabályzattal szemben.
Végrehajtási házirend kezelése csoportházirenddel
A Szkriptvégrehajtási csoportházirend bekapcsolása beállítással kezelheti a vállalaton belüli számítógépek végrehajtási házirendjét. A csoportházirend-beállítás minden hatókörben felülbírálja a PowerShellben beállított végrehajtási házirendeteket.
A Parancsfájl-végrehajtás bekapcsolása házirend beállításai a következők:
Ha letiltja a Parancsfájl-végrehajtás bekapcsolása beállítást, a szkriptek nem futnak. Ez egyenértékű a Restricted végrehajtási szabályzattal.
Ha engedélyezi a Parancsfájl-végrehajtás bekapcsolása beállítást, végrehajtási házirendet választhat. A csoportházirend-beállítások egyenértékűek a következő végrehajtási házirend-beállításokkal:
Csoportházirend Végrehajtási házirend Minden szkript engedélyezése Unrestricted Helyi szkriptek és távoli aláírt szkriptek engedélyezése RemoteSigned Csak aláírt szkriptek engedélyezése AllSigned Ha a Parancsfájl-végrehajtás bekapcsolása nincs konfigurálva, nincs hatása a működésre. A PowerShellben beállított végrehajtási házirend van érvényben.
A PowerShellExecutionPolicy.adm és a PowerShellExecutionPolicy.admx fájl a következő útvonalakon adja a Parancsfájl-végrehajtás bekapcsolása házirendet a Számítógép konfigurációja és a Felhasználói konfiguráció csomóponthoz a Csoportházirend-szerkesztőben.
Windows XP és Windows Server 2003 esetén:
Administrative Templates\Windows Components\Windows PowerShell
Windows Vista és a Windows későbbi verziói esetén:
Administrative Templates\Classic Administrative Templates\Windows Components\Windows PowerShell
A Számítógép konfigurációja csomópontban beállított házirendek elsőbbséget élveznek a Felhasználói konfiguráció csomópontban beállított házirendekkel szemben.
További információ: about_Group_Policy_Settings.
Végrehajtási szabályzat elsőbbsége
Egy munkamenet tényleges végrehajtási szabályzatának meghatározásakor a PowerShell a végrehajtási szabályzatokat a következő sorrendben értékeli ki:
Group Policy: MachinePolicy
Group Policy: UserPolicy
Execution Policy: Process (or powershell.exe -ExecutionPolicy)
Execution Policy: LocalMachine
Execution Policy: CurrentUser
Aláírt és aláíratlan szkriptek kezelése
Windows rendszerben az Internet Explorerhez és a Microsoft Edge-hez hasonló programok alternatív adatfolyamot adnak a letöltött fájlokhoz. Ez a fájl az "internetről érkező" jelölést jelöli. Ha a PowerShell végrehajtási szabályzata RemoteSigned, a PowerShell nem fog aláíratlan szkripteket futtatni, amelyeket az internetről tölt le, beleértve az e-maileket és a csevegőprogramokat.
Aláírhatja a szkriptet, vagy dönthet úgy, hogy aláíratlan szkriptet futtat a végrehajtási szabályzat módosítása nélkül.
A PowerShell 3.0-tól kezdve a parancsmag Stream paraméterével észlelheti az Get-Item
internetről letöltött fájlok blokkolt fájljait. Unblock-File
A parancsmaggal feloldhatja a szkriptek letiltását, hogy a PowerShellben futtathassa őket.
További információ: about_Signing, Get-Item és Unblock-File.
Feljegyzés
Előfordulhat, hogy a fájlok letöltésének egyéb módszerei nem jelölik meg a fájlokat az internetzónából érkezőként. Néhány példa:
curl.exe
Invoke-RestMethod
Invoke-WebRequest
Végrehajtási szabályzat a Windows Server Core-on és a Windows Nano Serveren
Ha a PowerShell 6 a Windows Server Core-on vagy a Windows Nano Serveren fut bizonyos feltételek mellett, a végrehajtási szabályzatok a következő hibával hiúsulhatnak meg:
AuthorizationManager check failed.
At line:1 char:1
+ C:\scriptpath\scriptname.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
A PowerShell api-kat használ a Windows Desktop Shellben (explorer.exe
) egy szkriptfájl zónájának ellenőrzéséhez. A Windows Shell nem érhető el a Windows Server Core-on és a Windows Nano Serveren.
Ezt a hibát bármely Windows rendszeren is megkaphatja, ha a Windows Desktop Shell nem érhető el vagy nem válaszol. A bejelentkezés során például egy PowerShell-bejelentkezési szkript még a Windows Desktop elkészülte előtt megkezdheti a végrehajtást, ami sikertelenséget eredményez.
Az AllSigned vagy az AllSigned végrehajtási szabályzatának ByPass használata nem igényel zónaellenőrzést, amely elkerüli a problémát.