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 kezdve az alapértelmezett végrehajtási szabályzat korlátlan , é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. Emellett azt is megadhatja, hogy a szkripteket a futtatás előtt digitálisan alá kell-e írni.

A Set-ExecutionPolicy parancsmag alapértelmezett hatóköre a LocalMachine, amely a számítógépet használó összes felhasználót érinti. A LocalMachine végrehajtási szabályzatának módosításához indítsa el a PowerShellt a Futtatás rendszergazdaként parancsmaggal.

Az egyes hatókörök végrehajtási szabályzatainak elsőbbségi sorrendben való megjelenítéséhez használja a következőt Get-ExecutionPolicy -List: . A PowerShell-munkamenet Get-ExecutionPolicy hatályos végrehajtási szabályzatának megtekintése 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 házirendet a helyi számítógéphez.

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 az ExecutionPolicy paramétert használja a RemoteSigned szabályzat megadásához. A Hatókör paraméter megadja az alapértelmezett hatókörértéket, a LocalMachine é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.

2. példa: Olyan végrehajtási szabályzat beállítása, amely ütközik egy Csoportházirend

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 hatékony szabályzat, mert ütközik egy Csoportházirend. A korlátozott szabályzat a beállításjegyzékbeli hive-HKEY_LOCAL_MACHINE lesz megí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 Korlátozott szabályzat megadásához. A Hatókör paraméter megadja az alapértelmezett hatókörértéket, a LocalMachine értéket. A Get-ChildItem parancsmag a Path paramétert és a HKLM-szolgáltatót használja a beállításjegyzék helyének megadásához.

3. példa: Végrehajtási szabályzat alkalmazása távoli számítógépről 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 A egy Microsoft.PowerShell.ExecutionPolicy objektumot küld a folyamaton. Set-ExecutionPolicy A folyamatbemenetet fogad, és nem igényli az ExecutionPolicy paramétert.

PS> Invoke-Command -ComputerName Server01 -ScriptBlock { Get-ExecutionPolicy } | Set-ExecutionPolicy

A Invoke-Command parancsmag a helyi számítógépen lesz végrehajtva, és elküldi a ScriptBlockot a távoli számítógépnek. 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-ExecutionPolicy A 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: 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 megadott hatókörhöz, a CurrentUserhez. A CurrentUser hatókör csak azt a felhasználót érinti, 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    RemoteSigned

Set-ExecutionPolicy uses the ExecutionPolicy parameter to specify the AllSigned policy. A Hatókör paraméter a CurrentUser paramétert 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.

A felhasználó érvényes végrehajtási szabályzata AllSigned lesz.

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 egy végrehajtási szabályzatot egy adott hatókörhöz a Nem definiált 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 uses the ExecutionPolicy parameter to specify the Undefined policy. A Hatókör paraméter a CurrentUser paramétert 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.

6. példa: Az aktuális PowerShell-munkamenet végrehajtási szabályzatának beállítása

A folyamat hatóköre csak az aktuális PowerShell-munkamenetre van hatással. A végrehajtási szabályzat a környezeti változóba $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 az ExecutionPolicy paramétert használja az AllSigned szabályzat megadásához. A Hatókör 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: Szkript letiltá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-Fileelőtt ajánlott elolvasni a szkript kódját, és ellenőrizni, hogy biztonságos-e. A Unblock-File parancsmag feloldja a parancsfájlok 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:

Az Set-ExecutionPolicyExecutionPolicy paraméter használatával adja meg a RemoteSigned szabályzatot . A házirend az alapértelmezett hatókörhöz, a LocalMachine-hez van beállítva.

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 RemoteSigned letiltja a szkriptet, mert a szkript nincs digitálisan aláírva.

Ebben a példában a szkript kódját ellenőriztük és ellenőriztük, hogy biztonságosan futtatható-e. A Unblock-File parancsmag a Path paramétert használja a szkript blokkolásának feloldásához.

Annak ellenőrzéséhez, hogy nem módosította-e Unblock-File 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 elkezd futni, mert a parancsmag feloldotta a Unblock-File tiltá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
Accept pipeline input:False
Accept wildcard characters:False

-ExecutionPolicy

A végrehajtási szabályzatot határozza meg. Ha nincsenek csoportházirendek, és az egyes hatókörök végrehajtási szabályzata nincs meghatározva, akkor a Korlátozott érték lesz az összes felhasználó érvényes szabályzata.

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 parancsfájlokat is.
  • Megkerülés. Semmi sem blokkolva, és nincsenek figyelmeztetések vagy figyelmeztetések.
  • Alapértelmezett érték. Beállítja az alapértelmezett végrehajtási szabályzatot. Windows-ügyfelekre vagy RemoteSigned windowsos kiszolgálókra korlátozva.
  • 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 házirendje.
  • Korlátozott. Nem tölt be konfigurációs fájlokat, és nem futtat szkripteket. A Windows rendszerű ügyfélszámítógépek alapértelmezett végrehajtási szabályzata.
  • Nincs definiálva. 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 egy Csoportházirend állított be. Ha a végrehajtási szabályzat minden hatókörben nincs meghatározva, a hatályos végrehajtási szabályzat korlátozott.
  • Korlátlan. A PowerShell 6.0-tól kezdve 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
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 járjon el ezzel a paraméterrel.

Type:SwitchParameter
Position:Named
Default value: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 LocalMachine.

A hatályos végrehajtási szabályzatot az elsőbbségi sorrend határozza meg az alábbiak szerint:

  • MachinePolicy. Állítson be egy Csoportházirend a számítógép összes felhasználója számára.
  • UserPolicy. Állítsa be egy Csoportházirend a számítógép aktuális felhasználója számára.
  • Folyamat. Csak az aktuális PowerShell-munkamenetre van hatással.
  • 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.

A folyamat hatóköre 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 CurrentUser hatókör végrehajtási szabályzatai a beállításjegyzék hive-HKEY_LOCAL_USER vannak megírva.

A LocalMachine hatókör végrehajtási szabályzatai a beállításjegyzék hive-HKEY_LOCAL_MACHINE vannak megírva.

Type:ExecutionPolicyScope
Accepted values:CurrentUser, LocalMachine, MachinePolicy, Process, UserPolicy
Position:1
Default value:LocalMachine
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
Accept pipeline input:False
Accept wildcard characters:False

Bevitelek

Microsoft.PowerShell.ExecutionPolicy, System.String

A végrehajtási szabályzat objektumát vagy egy végrehajtási szabályzat nevét tartalmazó sztringet is átirányíthat a következőre Set-ExecutionPolicy: .

Kimenetek

None

Set-ExecutionPolicy nem ad vissza kimenetet.

Jegyzetek

Set-ExecutionPolicy A nem módosítja a MachinePolicy és a UserPolicy hatóköröket, mert csoportházirendek szerint vannak beállítva.

Set-ExecutionPolicynem bírálja felül a Csoportházirend, még akkor sem, ha a felhasználói beállítások szigorúbbak a szabályzatnál.

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 rendszer menti a felhasználói beállításokat, de ez nem érvényes. A PowerShell megjelenít egy üzenetet, amely elmagyarázza az ütközést.