Set-ExecutionPolicy (Microsoft.PowerShell.Security)
Set-ExecutionPolicy
- Modul:
- Microsoft.PowerShell.Security
Beállítja a PowerShell végrehajtási házirendeket a Windows rendszerű számítógépekhez.
Szintaxis
Set-ExecutionPolicy
[-ExecutionPolicy] <ExecutionPolicy>
[[-Scope] <ExecutionPolicyScope>]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]Leírás
A Set-ExecutionPolicy parancsmag megváltoztatja a PowerShell végrehajtási házirendjeit a Windows rendszerű számítógépeken. További információkért tekintse meg a about_Execution_Policies című részt.
A nem Windows rendszerű számítógépekhez készült PowerShell 6.0 verziótól kezdődően az alapértelmezett végrehajtási házirend a Unrestricted, és nem módosítható. A Set-ExecutionPolicy parancsmag elérhető, de a PowerShell konzolüzenetet jelenít meg, amely szerint nem támogatott.
A végrehajtási szabályzat a PowerShell biztonsági stratégia része. A végrehajtási házirendek határozzák meg, hogy betölthet-e konfigurációs fájlokat, például PowerShell-profilt, vagy futtathat-e parancsfájlokat. És, hogy a szkripteket le kell-e digitálisan aláírni a futtatásuk előtt.
A Set-ExecutionPolicy parancsmag alapértelmezett hatóköre a LocalMachine, amely mindenkit érint, aki a számítógépet használja. A LocalMachine végrehajtási házirendjének módosításához indítsa el a PowerShellt a Futtatás rendszergazdaként paranccsal.
Az egyes hatókörök végrehajtási szabályzatának megjelenítéséhez használja a Get-ExecutionPolicy -List parancsot. A PowerShell-munkamenet hatékony végrehajtási szabályzatának megtekintéséhez használja a Get-ExecutionPolicy parancsot 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 kell beállítani 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 RemoteSignedA Set-ExecutionPolicy parancsmag az ExecutionPolicy paramétert használja a RemoteSigned házirend megadásához. A Scope paraméter a LocalMachine hatókör alapértelmezett értékét adja meg. 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: Állítson be egy végrehajtási szabályzatot, amely ütközik egy csoportházirenddel
Ez a parancs megkísérli a LocalMachine hatókör végrehajtási szabályzatát Korlátozott értékre állítani. A LocalMachine szigorúbb, de nem a hatékony házirend, mert ütközik egy csoportházirenddel. A Korlátozott házirend a HKEY_LOCAL_MACHINE rendszerleíró adatbázisba 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 : UnrestrictedA Set-ExecutionPolicy parancsmag az ExecutionPolicy paramétert használja a Restricted házirend megadásához. A Scope paraméter a LocalMachine hatókör alapértelmezett értékét adja meg. A Get-ChildItem parancsmag a Path paramétert használja a HKLM: meghajtóval a beállításjegyzék helyének meghatározásához.
3. példa: Alkalmazza a végrehajtási szabályzatot egy távoli számítógépről egy helyi számítógépre
Ez a parancs lekéri a végrehajtási házirend objektumot egy távoli számítógépről, és beállítja a házirendet a helyi számítógépen. A Get-ExecutionPolicy egy Microsoft.PowerShell.ExecutionPolicy objektumot küld a folyamatban. A Set-ExecutionPolicy elfogadja a folyamatban lévő bevitelt, és nincs szüksége az ExecutionPolicy paraméterre.
Invoke-Command -ComputerName Server01 -ScriptBlock { Get-ExecutionPolicy } | Set-ExecutionPolicyAz Invoke-Command parancsmag a helyi számítógépen fut le, és elküldi a ScriptBlock-ot a távoli számítógépnek. A ComputerName paraméter határozza meg a távoli számítógépet, a Server01-t. A ScriptBlock paraméter a Get-ExecutionPolicy programot futtatja a távoli számítógépen. A Get-ExecutionPolicy objektum a folyamatban a Set-ExecutionPolicy-hoz kerül. A Set-ExecutionPolicy a végrehajtási szabályzatot a helyi számítógép alapértelmezett hatókörére, a LocalMachine-ra alkalmazza.
4. példa: Állítsa be a végrehajtási szabályzat hatókörét
Ez a példa bemutatja, hogyan állíthat be végrehajtási házirendet egy megadott hatókörhöz, a CurrentUser-hoz. A CurrentUser hatókör csak arra a felhasználóra vonatkozik, aki beállítja ezt a hatókört.
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser AllSigned
LocalMachine RemoteSignedA Set-ExecutionPolicy az ExecutionPolicy paramétert használja az AllSigned házirend meghatározásához. A Scope paraméter határozza meg a CurrentUser értéket. 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 AllSigned lesz.
5. példa: Távolítsa el az aktuális felhasználó végrehajtási szabályzatát
Ez a példa bemutatja, hogy a Undefined végrehajtási házirend segítségével hogyan távolíthat el egy végrehajtási szabályzatot egy megadott hatókörhöz.
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine RemoteSignedA Set-ExecutionPolicy az ExecutionPolicy paramétert használja a Undefined házirend megadásához. A Scope paraméter határozza meg a CurrentUser értéket. 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: Állítsa be az aktuális PowerShell-munkamenet végrehajtási szabályzatát
A Folyamat hatókör csak az aktuális PowerShell-munkamenetet érinti. A végrehajtási házirend a $env:PSExecutionPolicyPreference környezeti változóba kerül mentésre, é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 RemoteSignedA Set-ExecutionPolicy az ExecutionPolicy paramétert használja az AllSigned házirend megadásához. A Scope paraméter a Folyamat értéket adja meg. 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: Oldja fel a szkript blokkolását, hogy a végrehajtási szabályzat módosítása nélkül lehessen futtatni
Ez a példa bemutatja, hogy a RemoteSigned végrehajtási házirend hogyan akadályozza meg az aláíratlan szkriptek futtatását.
A legjobb módszer az, ha előtt olvassa el a szkript kódját, és ellenőrizze, hogy biztonságos-e a Unblock-File parancsmag használatával. A Unblock-File parancsmag feloldja a szkriptek blokkolását, így azok futhatnak, 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 házirend megadásához. A házirend az alapértelmezett LocalMachine hatókörhöz van beállítva.
A Get-ExecutionPolicy parancsmag azt mutatja, hogy a RemoteSigned a hatékony végrehajtási házirend az aktuális PowerShell-munkamenethez.
A Start-ActivityTracker.ps1 szkript az aktuális könyvtárból kerül végrehajtásra. A szkriptet a RemoteSigned` blokkolja, mert a szkript nincs digitálisan aláírva.
Ebben a példában a szkript kódját felülvizsgáltuk, és ellenőriztük, hogy biztonságos-e a futtatása. A Unblock-File parancsmag a Path paramétert használja a szkript blokkolásának feloldásához.
Annak ellenőrzésére, hogy a Unblock-File nem változtatta meg a végrehajtási házirendet, a Get-ExecutionPolicy megjeleníti a hatékony végrehajtási szabályzatot, a RemoteSigned-t.
A Start-ActivityTracker.ps1 szkript az aktuális könyvtárból fut le. A szkript futni kezd, mert a Unblock-File parancsmag feloldotta a blokkolást.
Paraméterek
-Confirm
A parancsmag futtatása előtt megerősítést kér.
- Típus:
SwitchParameter
- Álnevek:
cf
- Pozíció:
Elnevezett
- Alapértelmezett érték:
False
- Kívánt:
False
- Csővezeték bevitel elfogadása:
False
- Helyettesítő karakterek elfogadása:
False
-ExecutionPolicy
Meghatározza a végrehajtási szabályzatot. Ha nincsenek csoportházirendek, és az egyes hatókörök végrehajtási házirendje Undefined értékre van állítva, akkor a Korlátozott lesz az érvényes házirend minden felhasználó számára.
Az elfogadható végrehajtási irányelvek értékei a következők:
AllSigned. Megköveteli, hogy minden parancsfájlt és konfigurációs fájlt megbízható kiadó írja alá, beleértve a helyi számítógépen írt parancsfájlokat is.Kikerülés. Semmi sincs blokkolva, és nincsenek figyelmeztetések vagy felszólítások.Alapértelmezett. Beállítja az alapértelmezett végrehajtási házirendet.KorlátozottWindows-klienseknél vagyRemoteSignedWindows-kiszolgálóknál.RemoteSigned. Megköveteli, hogy az internetről letöltött összes szkriptet és konfigurációs fájlt megbízható kiadó írja alá. Az alapértelmezett végrehajtási házirend a Windows kiszolgáló számítógépekhez.Korlátozott. 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 házirendje.Meghatározatlan. A hatókörhöz nincs végrehajtási szabályzat beállítva. Eltávolít egy hozzárendelt végrehajtási házirendet egy olyan hatókörből, amelyet nem csoportházirend állított be. Ha a végrehajtási házirend minden hatókörbenUndefined, akkor a tényleges végrehajtási házirendKorlátozott.Korlátlan. A PowerShell 6.0-tól kezdve ez az alapértelmezett végrehajtási házirend a nem Windows rendszerű számítógépeken, és nem módosítható. Betölti az összes konfigurációs fájlt és futtatja az összes szkriptet. Ha olyan aláíratlan szkriptet futtat, amelyet az internetről töltöttek le, akkor a futtatás előtt engedélyt kell kérnie.
- Típus:
ExecutionPolicy
- Elfogadott értékek:
AllSigned, Bypass, Alapértelmezett, Távoli aláírt, Korlátozott, Nem definiált, Korlátlan
- Pozíció:
0
- Alapértelmezett érték:
None
- Kívánt:
True
- Csővezeték bevitel elfogadása:
True
- Helyettesítő karakterek elfogadása:
False
-Force
Elnyomja az összes megerősítést kérő üzenetet. Legyen óvatos ezzel a paraméterrel a váratlan eredmények elkerülése érdekében.
- Típus:
SwitchParameter
- Pozíció:
Elnevezett
- Alapértelmezett érték:
False
- Kívánt:
False
- Csővezeték bevitel elfogadása:
False
- Helyettesítő karakterek elfogadása:
False
-Scope
Meghatározza a végrehajtási házirend által érintett hatókört. Az alapértelmezett hatókör a LocalMachine.
A hatékony végrehajtási szabályzatot a következő sorrend határozza meg:
MachinePolicy- Csoportházirend által beállítva a számítógép összes felhasználója számáraUserPolicy- Csoportházirend által beállítva a számítógép aktuális felhasználója számáraFolyamat- 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 Folyamat hatókör csak az aktuális PowerShell-munkamenetet érinti. A végrehajtási szabályzat a rendszerleíró adatbázis helyett a $env:PSExecutionPolicyPreference környezeti változóba kerül mentésre. A PowerShell-munkamenet bezárásakor a változó és az érték törlődik.
A CurrentUser hatókör végrehajtási szabályzatai a HKEY_LOCAL_USER rendszerleíró adatbázisba vannak írva.
A LocalMachine hatókör végrehajtási szabályzatai a HKEY_LOCAL_MACHINE rendszerleíró adatbázisba vannak írva.
- Típus:
ExecutionPolicyScope
- Elfogadott értékek:
CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy
- Pozíció:
1
- Alapértelmezett érték:
LocalMachine
- Kívánt:
False
- Csővezeték bevitel elfogadása:
True
- Helyettesítő karakterek elfogadása:
False
-WhatIf
Megmutatja, mi történik, ha a parancsmag lefut. A parancsmag nem fut.
- Típus:
SwitchParameter
- Álnevek:
wi
- Pozíció:
Elnevezett
- Alapértelmezett érték:
False
- Kívánt:
False
- Csővezeték bevitel elfogadása:
False
- Helyettesítő karakterek elfogadása:
False
Bemenetek
Végrehajtási szabályzat
Végrehajtási házirend-objektumot irányíthat ebbe a parancsmagba.
Karakterlánc
Egy végrehajtási házirend nevét tartalmazó karakterláncot vezényelhet ebbe a parancsmagba.
Kimenetek
Nincs
Ez a parancsmag nem ad vissza kimenetet.
Megjegyzések
A Set-ExecutionPolicy nem módosítja a MachinePolicy és a UserPolicy hatókört, mert azokat a csoportházirendek határozzák meg.
A Set-ExecutionPolicy nem írja felül a csoportházirendet, még akkor sem, ha a felhasználói preferenciák szigorúbbak, mint a házirend.
Ha a csoportházirend Parancsfájl-végrehajtás bekapcsolása engedélyezve van a számítógépen vagy a felhasználónál, a felhasználói beállítások mentésre kerülnek, de nem hatékonyak. A PowerShell üzenetet jelenít meg, amely elmagyarázza az ütközést.