Megosztás a következőn keresztül:


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 PowerShell konfigurációs fájljaiban 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 megkerülhetnek egy szabályzatot úgy, hogy begépelik a szkript 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.

Nem Windows rendszerű számítógépeken az alapértelmezett végrehajtási szabályzat Unrestricted, é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. Bár Get-ExecutionPolicy nem Windows-platformokon tér visszaUnrestricted, a viselkedés valóban egyezikBypass, mivel ezek a platformok nem implementálják a Windows biztonság Zónákat.

PowerShell-végrehajtási szabályzatok

Ezeknek a szabályzatoknak a érvényesítése csak Windows-platformokon történik. 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 az alapértelmezett végrehajtási szabályzatot.
    • RemoteSigned Windows-ügyfelekhez és kiszolgálókhoz.
  • RemoteSigned

    • A Windows rendszerű számítógépek alapértelmezett 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

    • 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ális hatókörben nincs 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

    • Nem Windows rendszerű számítógépek alapértelmezett végrehajtási szabályzata, és nem módosítható.
    • 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 hatóköre

Olyan végrehajtási szabályzatot állíthat be, amely csak egy adott hatókörben érvényes.

Az érvényes értékek a következőkScope: MachinePolicy UserPolicy, ProcessCurrentUser és LocalMachine. Végrehajtási szabályzat beállításakor a LocalMachine az alapértelmezett.

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

    A Process hatókör csak az aktuális PowerShell-munkamenetre van hatással. A végrehajtási szabályzatot a rendszer a konfigurációs fájl helyett a környezeti változóba $Env:PSExecutionPolicyPreferencementi. 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 CurrentUser konfigurációs fájlban 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 az AllUsers konfigurációs fájljá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.

Az adott hatókörhöz való végrehajtási házirend lekéréséhez használja a ScopeGet-ExecutionPolicy paraméterét.

A következő parancs például lekéri a végrehajtási házirendet az CurrentUser hatókörhöz:

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 konfigurációs fájlba, és mindaddig érvényes marad, amíg újra nem módosítja.

Ha a Process hatókör végrehajtási szabályzatát állítja be, az nem lesz mentve a konfigurációs fájlba. A végrehajtási politika mindaddig megmarad, amíg az aktuális folyamat és bármely gyermekfolyamat be nem zárul.

Feljegyzés

A Windows Vista és a Windows újabb verzióiban, ha meg szeretné változtatni a helyi számítógép végrehajtási szabályzatát a LocalMachine hatókörében, indítsa el a PowerShellt a Futtatás rendszergazdaként opcióval.

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 hatókörben:

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 hatókör végrehajtási szabályzatát, állítsa a végrehajtási szabályzatot 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 semmilyen hatókörben, akkor a tényleges végrehajtási szabályzat Restricted, amely a Windows-ügyfelek esetében az alapértelmezett.

Másik szabályzat beállítása egy munkamenethez

A ExecutionPolicy paraméterrel pwsh.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 pwsh.exe .

Példa:

pwsh.exe -ExecutionPolicy AllSigned

A beállított végrehajtási szabályzat nem a konfigurációs fájlban 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ó konfigurációs fájljában 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ájlok a csoportházirend-szerkesztő számítógépkonfigurációs és felhasználói konfigurációs csomópontjaihoz hozzáadják a Szkriptvégrehajtási házirend bekapcsolása a Csoportházirend-szerkesztő számítógépkonfigurációs és felhasználói konfigurációs csomópontjaihoz az alábbi elérési úton:

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 pwsh.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 ByPass vagy AllSigned végrehajtási szabályzatának használata nem igényel zónaellenőrzést, amely elkerüli a problémát.

Lásd még