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


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 LocalMachineindí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_MACHINEvan í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-ExecutionPolicyEgy 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-ExecutionPolicya 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 vagy RemoteSigned 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 az Undefined, 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ára
  • UserPolicy – A számítógép aktuális felhasználójának csoportházirenddel történő beállítása
  • Process – Csak az aktuális PowerShell-munkamenetet érinti
  • LocalMachine – Alapértelmezett hatókör, amely a számítógép összes felhasználóját érinti
  • CurrentUser – 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:PSExecutionPolicyPreferencementi. 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_USERvannak írva.

A hatókör végrehajtási szabályzatai a LocalMachine beállításjegyzék-hive-be HKEY_LOCAL_MACHINEvannak í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

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-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.