Set-ExecutionPolicy

Windows bilgisayarlar için PowerShell yürütme ilkelerini ayarlar.

Syntax

Set-ExecutionPolicy
   [-ExecutionPolicy] <ExecutionPolicy>
   [[-Scope] <ExecutionPolicyScope>]
   [-Force]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

Cmdlet, Set-ExecutionPolicy Windows bilgisayarlar için PowerShell yürütme ilkelerini değiştirir. Daha fazla bilgi için bkz. about_Execution_Policies.

Windows olmayan bilgisayarlar için PowerShell 6.0'da başlayan varsayılan yürütme ilkesidir Unrestricted ve değiştirilemez. Set-ExecutionPolicy Cmdlet kullanılabilir, ancak PowerShell desteklenmediğini belirten bir konsol iletisi görüntüler.

Yürütme ilkesi, PowerShell güvenlik stratejisinin bir parçasıdır. Yürütme ilkeleri, PowerShell profiliniz gibi yapılandırma dosyalarını yükleyip yükleyemeyeceğinizi veya betik çalıştırabileceğinizi belirler. Ayrıca betiklerin çalıştırılmadan önce dijital olarak imzalanması gerekip gerekmediği.

Set-ExecutionPolicy Cmdlet'in varsayılan kapsamıdır ve LocalMachinebu, bilgisayarı kullanan herkesi etkiler. için yürütme ilkesini değiştirmek için LocalMachinePowerShell'i farklı çalıştır Yönetici istrator ile başlatın.

Her kapsamın yürütme ilkelerini görüntülemek için kullanın Get-ExecutionPolicy -List. PowerShell oturumunuzun etkin yürütme ilkesini görmek için parametresiz kullanın Get-ExecutionPolicy .

Örnekler

Örnek 1: Yürütme ilkesi ayarlama

Bu örnekte, yerel bilgisayar için yürütme ilkesinin nasıl ayarlanacağı gösterilmektedir.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
Get-ExecutionPolicy -List

Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser    RemoteSigned
 LocalMachine    RemoteSigned

Cmdlet, Set-ExecutionPolicy ilkeyi belirtmek için ExecutionPolicy parametresini RemoteSigned kullanır. Scope parametresi varsayılan kapsam değerini LocalMachinebelirtir. Yürütme ilkesi ayarlarını görüntülemek için List parametresiyle cmdlet'ini kullanınGet-ExecutionPolicy.

Örnek 2: Grup İlkesi ile çakişen bir yürütme ilkesi ayarlama

Bu komut, kapsamın LocalMachine yürütme ilkesini olarak ayarlamaya Restrictedçalışır. LocalMachine daha kısıtlayıcıdır, ancak bir Grup İlkesi ile çakşır olduğundan etkili ilke değildir. İlke Restricted kayıt defteri kovanına HKEY_LOCAL_MACHINEyazılır.

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

Cmdlet, Set-ExecutionPolicy ilkeyi belirtmek için ExecutionPolicy parametresini Restricted kullanır. Scope parametresi varsayılan kapsam değerini LocalMachinebelirtir. Cmdlet, Get-ChildItem kayıt defteri konumunu belirtmek için sürücüyle birlikte HKLM: Path parametresini kullanır.

Örnek 3: Yürütme ilkesini uzak bir bilgisayardan yerel bilgisayara uygulama

Bu komut, uzak bir bilgisayardan yürütme ilkesi nesnesini alır ve ilkeyi yerel bilgisayarda ayarlar. Get-ExecutionPolicy işlem hattına bir Microsoft.PowerShell.ExecutionPolicy nesnesi gönderir. Set-ExecutionPolicyişlem hattı girişini kabul eder ve ExecutionPolicy parametresini gerektirmez.

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

Invoke-Command Cmdlet yerel bilgisayarda yürütülür ve ScriptBlock'ı uzak bilgisayara gönderir. ComputerName parametresi uzak bilgisayar Olan Server01'i belirtir. ScriptBlock parametresi uzak bilgisayarda çalışırGet-ExecutionPolicy. Get-ExecutionPolicy nesnesi işlem hattına Set-ExecutionPolicygönderilir. Set-ExecutionPolicy yürütme ilkesini yerel bilgisayarın varsayılan kapsamı LocalMachineolan öğesine uygular.

Örnek 4: Yürütme ilkesinin kapsamını ayarlama

Bu örnekte, CurrentUserbelirtilen kapsam için bir yürütme ilkesinin nasıl ayarlanacağı gösterilmektedir. Kapsam CurrentUser yalnızca bu kapsamı ayarlayan kullanıcıyı etkiler.

Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
Get-ExecutionPolicy -List

Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       AllSigned
 LocalMachine    RemoteSigned

Set-ExecutionPolicy ilkeyi belirtmek için ExecutionPolicy parametresini AllSigned kullanır. Scope parametresi öğesini CurrentUserbelirtir. Yürütme ilkesi ayarlarını görüntülemek için List parametresiyle cmdlet'ini kullanınGet-ExecutionPolicy.

Kullanıcının etkin yürütme ilkesi olur AllSigned.

Örnek 5: Geçerli kullanıcının yürütme ilkesini kaldırma

Bu örnekte, belirtilen kapsam için bir yürütme ilkesini kaldırmak için yürütme ilkesinin nasıl kullanılacağı Undefined gösterilmektedir.

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Get-ExecutionPolicy -List

Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    RemoteSigned

Set-ExecutionPolicy ilkeyi belirtmek için ExecutionPolicy parametresini Undefined kullanır. Scope parametresi öğesini CurrentUserbelirtir. Yürütme ilkesi ayarlarını görüntülemek için List parametresiyle cmdlet'ini kullanınGet-ExecutionPolicy.

Örnek 6: Geçerli PowerShell oturumu için yürütme ilkesini ayarlama

Kapsam Process yalnızca geçerli PowerShell oturumunu etkiler. Yürütme ilkesi ortam değişkenine $env:PSExecutionPolicyPreference kaydedilir ve oturum kapatıldığında silinir.

Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope Process

Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       AllSigned
  CurrentUser    RemoteSigned
 LocalMachine    RemoteSigned

, Set-ExecutionPolicy ilkeyi belirtmek için ExecutionPolicy parametresini AllSigned kullanır. Scope parametresi değerini Processbelirtir. Yürütme ilkesi ayarlarını görüntülemek için List parametresiyle cmdlet'ini kullanınGet-ExecutionPolicy.

Örnek 7: Yürütme ilkesini değiştirmeden çalıştırmak için bir betiğin engellemesini kaldırma

Bu örnekte, yürütme ilkesinin RemoteSigned imzalanmamış betikleri çalıştırmanızı nasıl önlediği gösterilmektedir.

En iyi yöntem, cmdlet'ini kullanmadan önce betiğin Unblock-File kodunu okumak ve güvenli olduğunu doğrulamaktır. Unblock-File Cmdlet, çalıştırılabilmeleri için betiklerin engellemesini kaldırır, ancak yürütme ilkesini değiştirmez.

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:

, Set-ExecutionPolicy ilkeyi belirtmek için ExecutionPolicy parametresini RemoteSigned kullanır. İlke varsayılan kapsam LocalMachineolan için ayarlanır.

cmdlet'i Get-ExecutionPolicy , geçerli PowerShell oturumu için etkili yürütme ilkesi olduğunu RemoteSigned gösterir.

Start-ActivityTracker.ps1 script is executed from the current directory. The script is blocked by Betik dijital olarak imzalanmamış olduğundan RemoteSigned'.

Bu örnekte betiğin kodu gözden geçirildi ve çalıştırılması güvenli olarak doğrulandı. Cmdlet, Unblock-File betiğin engelini kaldırmak için Path parametresini kullanır.

Bunun yürütme ilkesini değiştirmediğini Unblock-File doğrulamak için etkin Get-ExecutionPolicy yürütme ilkesini RemoteSignedgörüntüler.

Betik, Start-ActivityTracker.ps1 geçerli dizinden yürütülür. Cmdlet'i tarafından Unblock-File engeli kaldırıldığı için betik çalışmaya başlar.

Parametreler

-Confirm

Cmdlet'i çalıştırmadan önce sizden onay ister.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ExecutionPolicy

Yürütme ilkesini belirtir. Grup İlkeleri yoksa ve her kapsamın yürütme ilkesi olarak Undefinedayarlanırsa Restricted , tüm kullanıcılar için geçerli ilke olur.

Kabul edilebilir yürütme ilkesi değerleri aşağıdaki gibidir:

  • AllSigned. Yerel bilgisayarda yazılan betikler de dahil olmak üzere tüm betiklerin ve yapılandırma dosyalarının güvenilir bir yayımcı tarafından imzalı olmasını gerektirir.
  • Bypass. Hiçbir şey engellenmez ve uyarı veya istem yoktur.
  • Default. Varsayılan yürütme ilkesini ayarlar. Restricted veya Windows RemoteSigned sunucuları için.
  • RemoteSigned. İnternet'ten indirilen tüm betiklerin ve yapılandırma dosyalarının güvenilir bir yayımcı tarafından imzalı olmasını gerektirir. Windows sunucu bilgisayarları için varsayılan yürütme ilkesi.
  • Restricted. Yapılandırma dosyalarını yüklemez veya betikleri çalıştırmaz. Windows istemci bilgisayarları için varsayılan yürütme ilkesi.
  • Undefined. Kapsam için hiçbir yürütme ilkesi ayarlanmadı. Atanmış bir yürütme ilkesini, Grup İlkesi tarafından ayarlanmayan bir kapsamdan kaldırır. Tüm kapsamlardaki yürütme ilkesi ise Undefined, etkin yürütme ilkesi olur Restricted.
  • Unrestricted. PowerShell 6.0'da başlayarak, bu Windows olmayan bilgisayarlar için varsayılan yürütme ilkesidir ve değiştirilemez. Tüm yapılandırma dosyalarını yükler ve tüm betikleri çalıştırır. İnternet'ten indirilen imzasız bir betik çalıştırırsanız, çalıştırılmadan önce izniniz istenir.
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

Tüm onay istemlerini gizler. Beklenmeyen sonuçlardan kaçınmak için bu parametreyle dikkatli olun.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Scope

Yürütme ilkesinden etkilenen kapsamı belirtir. Varsayılan kapsam şeklindedir LocalMachine.

Etkin yürütme ilkesi, öncelik sırasına göre aşağıdaki gibi belirlenir:

  • MachinePolicy - Bilgisayarın tüm kullanıcıları için Bir Grup İlkesi tarafından ayarlanır
  • UserPolicy - Bilgisayarın geçerli kullanıcısı için bir Grup İlkesi tarafından ayarlanır
  • Process - Yalnızca geçerli PowerShell oturumunu etkiler
  • LocalMachine - Bilgisayarın tüm kullanıcılarını etkileyen varsayılan kapsam
  • CurrentUser - Yalnızca geçerli kullanıcıyı etkiler

Kapsam Process yalnızca geçerli PowerShell oturumunu etkiler. Yürütme ilkesi, kayıt defteri yerine ortam değişkenine $env:PSExecutionPolicyPreferencekaydedilir. PowerShell oturumu kapatıldığında değişken ve değer silinir.

Kapsamın CurrentUser yürütme ilkeleri kayıt defteri kovanına HKEY_LOCAL_USERyazılır.

Kapsamın LocalMachine yürütme ilkeleri kayıt defteri kovanına HKEY_LOCAL_MACHINEyazılır.

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

Cmdlet çalıştırılıyorsa ne olacağını gösterir. Cmdlet çalıştırılmaz.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Girişler

ExecutionPolicy

Yürütme ilkesi nesnesini bu cmdlet'e yöneltebilirsiniz.

String

Yürütme ilkesinin adını içeren bir dizeyi bu cmdlet'e aktarabilirsiniz.

Çıkışlar

None

Bu cmdlet çıkış döndürmez.

Notlar

Set-ExecutionPolicyve UserPolicy kapsamları, Grup İlkeleri tarafından ayarlandığından değişmezMachinePolicy.

Set-ExecutionPolicy kullanıcı tercihi ilkeden daha kısıtlayıcı olsa bile Grup İlkesi'ni geçersiz kılmaz.

Bilgisayar veya kullanıcı için Grup İlkesi Betik Yürütmeyi Aç etkinleştirildiyse, kullanıcı tercihi kaydedilir, ancak geçerli değildir. PowerShell çakışmayı açıklayan bir ileti görüntüler.