about_Execution_Policies

Kısa açıklama

PowerShell yürütme ilkelerini açıklar ve bunların nasıl yönetileceğini açıklar.

Uzun açıklama

PowerShell'in yürütme ilkesi, PowerShell'in yapılandırma dosyalarını yüklediği ve betikleri çalıştırdığı koşulları denetleyen bir güvenlik özelliğidir. Bu özellik, kötü amaçlı betiklerin yürütülmesini önlemeye yardımcı olur.

Bir Windows bilgisayarında yerel bilgisayar, geçerli kullanıcı veya belirli bir oturum için bir yürütme ilkesi ayarlayabilirsiniz. Bilgisayarlar ve kullanıcılar için yürütme ilkeleri ayarlamak için bir grup ilkesi ayarı da kullanabilirsiniz.

Yerel bilgisayar ve geçerli kullanıcı için yürütme ilkeleri kayıt defterinde depolanır. PowerShell profilinizde yürütme ilkeleri ayarlamanız gerekmez. Belirli bir oturumun yürütme ilkesi yalnızca bellekte depolanır ve oturum kapatıldığında kaybolur.

Yürütme ilkesi, kullanıcı eylemlerini kısıtlayan bir güvenlik sistemi değildir. Örneğin, kullanıcılar bir betiği çalıştıramadıklarında komut satırına betik içeriğini yazarak bir ilkeyi kolayca atlayabilir. Bunun yerine, yürütme ilkesi kullanıcıların temel kurallar ayarlamasına yardımcı olur ve istemeden ihlal etmelerini önler.

Windows olmayan bilgisayarlarda 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. Windows olmayan platformlarda döndürürken Get-ExecutionPolicyUnrestricted, bu platformlar Windows Güvenliği Bölgelerini uygulamadığından davranış gerçekten eşleşirBypass.

PowerShell yürütme ilkeleri

Bu ilkelerin uygulanması yalnızca Windows platformlarında gerçekleşir. PowerShell yürütme ilkeleri aşağıdaki gibidir:

AllSigned

  • Betikler çalıştırılabilir.
  • Yerel bilgisayarda yazdığınız betikler de dahil olmak üzere tüm betiklerin ve yapılandırma dosyalarının güvenilir bir yayımcı tarafından imzalanması gerekir.
  • Yayımcılardan henüz güvenilir veya güvenilmeyen olarak sınıflandırmadığınız betikleri çalıştırmadan önce size sorar.
  • İmzalı ancak kötü amaçlı betiklerin çalıştırılmasıyla ilgili riskler.

Bypass

  • Hiçbir şey engellenmez ve uyarı veya istem yoktur.
  • Bu yürütme ilkesi, PowerShell betiğinin daha büyük bir uygulamada yerleşik olduğu yapılandırmalar veya PowerShell'in kendi güvenlik modeline sahip bir programın temeli olduğu yapılandırmalar için tasarlanmıştır.

Default

  • Varsayılan yürütme ilkesini ayarlar.
  • Restricted windows istemcileri için.
  • Windows sunucuları için RemoteSigned.

Remotesigned

  • Windows sunucu bilgisayarları için varsayılan yürütme ilkesi.
  • Betikler çalıştırılabilir.
  • İnternet'ten indirilen ve e-posta ve anlık ileti programlarını içeren betikler ve yapılandırma dosyaları üzerinde güvenilir bir yayımcıdan dijital imza gerektirir.
  • Yerel bilgisayarda yazılan ve İnternet'ten indirilmeyen betiklerde dijital imzalar gerektirmez.
  • cmdlet'ini kullanmak Unblock-File gibi, betiklerin engeli kaldırılırsa, İnternet'ten indirilen ve imzalanmamış betikleri çalıştırır.
  • İnternet dışındaki kaynaklardan imzalanmamış betikleri ve kötü amaçlı olabilecek imzalı betikleri çalıştırma riski.

Restricted

  • Windows istemci bilgisayarları için varsayılan yürütme ilkesi.
  • Tek tek komutlara izin verir, ancak betiklere izin vermez.
  • Biçimlendirme ve yapılandırma dosyaları (), modül betik dosyaları ().ps1xml ve PowerShell profilleri (.psm1.ps1 dahil olmak üzere tüm betik dosyalarının çalıştırılmasını engeller.

Undefined

  • Geçerli kapsamda ayarlanmış bir yürütme ilkesi yok.
  • Tüm kapsamlardaki yürütme ilkesi iseUndefined, etkin yürütme ilkesi Windows istemcileri için ve Windows Server için RemoteSigned'dırRestricted.

Unrestricted

  • Windows olmayan bilgisayarlar için varsayılan yürütme ilkesidir ve değiştirilemez.
  • İmzasız betikler çalıştırılabilir. Kötü amaçlı betik çalıştırma riski vardır.
  • Yerel intranet bölgesinden olmayan betikleri ve yapılandırma dosyalarını çalıştırmadan önce kullanıcıyı uyarır.

Not

Evrensel Adlandırma Kuralı (UNC) yollarını internet yollarından ayırt etmeyen sistemlerde, UNC yolu tarafından tanımlanan betiklerin RemoteSigned yürütme ilkesiyle çalıştırılmasına izin verilmeyebilir.

Yürütme ilkesi kapsamı

Yalnızca belirli bir kapsamda etkili olan bir yürütme ilkesi ayarlayabilirsiniz.

için Scope geçerli değerler: MachinePolicy, UserPolicy, Process, CurrentUser ve LocalMachine. LocalMachine , bir yürütme ilkesi ayarlanırken varsayılan değerdir.

Scope Değerler öncelik sırasına göre listelenir. Öncelik alan ilke, daha kısıtlayıcı bir ilke daha düşük bir öncelik düzeyinde ayarlansa bile geçerli oturumda etkilidir.

Daha fazla bilgi için bkz. Set-ExecutionPolicy.

MachinePolicy

Bilgisayarın tüm kullanıcıları için bir grup ilkesi tarafından ayarlanır.

UserPolicy

Bilgisayarın geçerli kullanıcısı için bir grup ilkesi tarafından ayarlanır.

Process

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.

CurrentUser

Yürütme ilkesi yalnızca geçerli kullanıcıyı etkiler. HKEY_CURRENT_USER kayıt defteri alt anahtarında depolanır.

LocalMachine

Yürütme ilkesi geçerli bilgisayardaki tüm kullanıcıları etkiler. HKEY_LOCAL_MACHINE kayıt defteri alt anahtarında depolanır.

PowerShell ile yürütme ilkesini yönetme

Geçerli PowerShell oturumu için geçerli yürütme ilkesini almak için cmdlet'ini Get-ExecutionPolicy kullanın.

Aşağıdaki komut etkin yürütme ilkesini alır:

Get-ExecutionPolicy

Geçerli oturumu etkileyen tüm yürütme ilkelerini almak ve bunları öncelik sırasına göre görüntülemek için:

Get-ExecutionPolicy -List

Sonuç aşağıdaki örnek çıktıya benzer:

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

Bu durumda, geçerli kullanıcının yürütme ilkesi yerel bilgisayar için ayarlanan yürütme ilkesinden öncelikli olduğundan etkin yürütme ilkesi RemoteSigned şeklindedir.

Belirli bir kapsam için yürütme ilkesi kümesini almak için parametresini ScopeGet-ExecutionPolicykullanın.

Örneğin, aşağıdaki komut CurrentUser kapsamı için yürütme ilkesini alır:

Get-ExecutionPolicy -Scope CurrentUser

Yürütme ilkesini değiştirme

Windows bilgisayarınızda PowerShell yürütme ilkesini değiştirmek için cmdlet'ini Set-ExecutionPolicy kullanın. Değişiklik hemen geçerli olacak. PowerShell'i yeniden başlatmanız gerekmez.

LocalMachine veya CurrentUser kapsamları için yürütme ilkesini ayarlarsanız, değişiklik kayıt defterine kaydedilir ve siz yeniden değiştirene kadar etkin kalır.

Kapsam için Process yürütme ilkesini ayarlarsanız, kayıt defterine kaydedilmez. Yürütme ilkesi geçerli işlem ve alt işlemler kapatılana kadar korunur.

Not

Windows Vista'da ve Windows'un sonraki sürümlerinde, yerel bilgisayar, LocalMachine kapsamı için yürütme ilkesini değiştiren komutları çalıştırmak için PowerShell'i Yönetici olarak çalıştır seçeneğiyle başlatın.

Yürütme ilkenizi değiştirmek için:

Set-ExecutionPolicy -ExecutionPolicy <PolicyName>

Örnek:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Yürütme ilkesini belirli bir kapsamda ayarlamak için:

Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>

Örnek:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Yürütme ilkesini değiştirme komutu başarılı olabilir ancak yine de etkili yürütme ilkesini değiştiremez.

Örneğin, yerel bilgisayar için yürütme ilkesini ayarlayan bir komut başarılı olabilir, ancak geçerli kullanıcının yürütme ilkesi tarafından geçersiz kılınabilir.

Yürütme ilkesini kaldırma

Belirli bir kapsamın yürütme ilkesini kaldırmak için yürütme ilkesini olarak Undefinedayarlayın.

Örneğin, yerel bilgisayarın tüm kullanıcıları için yürütme ilkesini kaldırmak için:

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine

Bir Scopeiçin yürütme ilkesini kaldırmak için:

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser

Hiçbir kapsamda hiçbir yürütme ilkesi ayarlanmadıysa, etkin yürütme ilkesi RestrictedWindows istemcileri için varsayılan olan şeklindedir.

Bir oturum için farklı bir ilke ayarlama

ExecutionPolicy parametresini pwsh.exe kullanarak yeni bir PowerShell oturumu için bir yürütme ilkesi ayarlayabilirsiniz. İlke yalnızca geçerli oturumu ve alt oturumları etkiler.

Yeni bir oturumun yürütme ilkesini ayarlamak için PowerShell'i powershell gibi cmd.exe komut satırından başlatın ve yürütme ilkesini ayarlamak için ExecutionPolicy parametresini pwsh.exe kullanın.

Örnek:

pwsh.exe -ExecutionPolicy AllSigned

Ayarladığınız yürütme ilkesi kayıt defterinde depolanmaz. Bunun yerine ortam değişkeninde $env:PSExecutionPolicyPreference depolanır. İlkenin ayarlandığı oturumu kapattığınızda değişken silinir. Değişken değerini düzenleyerek ilkeyi değiştiremezsiniz.

Oturum sırasında, oturum için ayarlanan yürütme ilkesi, yerel bilgisayar veya geçerli kullanıcı için kayıt defterinde ayarlanan bir yürütme ilkesinden önceliklidir. Ancak, bir grup ilkesi kullanılarak ayarlanan yürütme ilkesinden öncelikli değildir.

Yürütme İlkesini Yönetmek için grup ilkesi Kullanma

Kuruluşunuzdaki bilgisayarların yürütme ilkesini yönetmek için Betik Yürütmeyi Aç grup ilkesi ayarını kullanabilirsiniz. grup ilkesi ayarı, tüm kapsamlarda PowerShell'de ayarlanan yürütme ilkelerini geçersiz kılar.

Betik Yürütmeyi Aç ilke ayarları aşağıdaki gibidir:

  • Betik Yürütmeyi Etkinleştir'i devre dışı bırakırsanız betikler çalışmaz. Bu, yürütme ilkesine Restricted eşdeğerdir.

  • Betik Yürütmeyi Aç'ı etkinleştirirseniz bir yürütme ilkesi seçebilirsiniz. grup ilkesi ayarları aşağıdaki yürütme ilkesi ayarlarına eşdeğerdir:

    Grup İlkesi Yürütme İlkesi
    Tüm betiklere izin ver Unrestricted
    Yerel betiklere ve uzaktan imzalanan betiklere izin ver Remotesigned
    Yalnızca imzalı betiklere izin ver AllSigned
  • Betik Yürütmeyi Aç yapılandırılmamışsa hiçbir etkisi olmaz. PowerShell'de ayarlanan yürütme ilkesi etkilidir.

PowerShellExecutionPolicy.adm ve PowerShellExecutionPolicy.admx dosyaları, Betik Yürütmeyi Aç ilkesini grup ilkesi Düzenleyicisi'ndeki Bilgisayar Yapılandırması ve Kullanıcı Yapılandırması düğümlerine aşağıdaki yollarda ekler.

Windows XP ve Windows Server 2003 için:

Administrative Templates\Windows Components\Windows PowerShell

Windows Vista ve Windows'un sonraki sürümleri için:

Administrative Templates\Classic Administrative Templates\Windows Components\Windows PowerShell

Bilgisayar Yapılandırması düğümünde ayarlanan ilkeler, Kullanıcı Yapılandırması düğümünde ayarlanan ilkelere göre önceliklidir.

Daha fazla bilgi için bkz. about_Group_Policy_Settings.

Yürütme ilkesi önceliği

PowerShell, bir oturum için etkin yürütme ilkesini belirlerken yürütme ilkelerini aşağıdaki öncelik sırasına göre değerlendirir:

Group Policy: MachinePolicy
Group Policy: UserPolicy
Execution Policy: Process (or pwsh.exe -ExecutionPolicy)
Execution Policy: CurrentUser
Execution Policy: LocalMachine

İmzalı ve imzasız betikleri yönetme

Windows'da Internet Explorer ve Microsoft Edge gibi programlar indirilen dosyalara alternatif bir veri akışı ekler. Bu, dosyayı "İnternet'ten geliyor" olarak işaretler. PowerShell yürütme ilkeniz RemoteSigned ise, PowerShell e-posta ve anlık ileti programlarını içeren internetten indirilen imzasız betikleri çalıştırmaz.

Betiği imzalayabilir veya yürütme ilkesini değiştirmeden imzalanmamış bir betiği çalıştırmayı seçebilirsiniz.

PowerShell 3.0'dan başlayarak, internetten indirildikleri için engellenen dosyaları algılamak için cmdlet'in Stream parametresini Get-Item kullanabilirsiniz. Betikleri Unblock-File PowerShell'de çalıştırabilmek için engellemesini kaldırmak için cmdlet'ini kullanın.

Daha fazla bilgi için bkz. about_Signing, Get-Item ve Unblock-File.

Not

Dosyaları indirmenin diğer yöntemleri, dosyaları İnternet Bölgesi'nden geliyor olarak işaretlemeyebilir. Bazı örnekler:

  • curl.exe
  • Invoke-RestMethod
  • Invoke-WebRequest

Windows Server Core ve Window Nano Server'da yürütme ilkesi

PowerShell 6 belirli koşullar altında Windows Server Core veya Windows Nano Server'da çalıştırıldığında, yürütme ilkeleri aşağıdaki hatayla başarısız olabilir:

AuthorizationManager check failed.
At line:1 char:1
+ C:\scriptpath\scriptname.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

PowerShell, bir betik dosyasının Bölgesini doğrulamak için Windows Masaüstü Kabuğu'ndaki (explorer.exe) API'leri kullanır. Windows Kabuğu, Windows Server Core ve Windows Nano Server'da kullanılamaz.

Windows Masaüstü Kabuğu kullanılamıyorsa veya yanıt vermiyorsa bu hatayı herhangi bir Windows sisteminde de alabilirsiniz. Örneğin, oturum açma sırasında Bir PowerShell oturum açma betiği Windows Masaüstü hazır olmadan önce yürütülmeye başlayıp başarısızlığa neden olabilir.

ByPass veya AllSigned yürütme ilkesinin kullanılması, sorunu önleyen bir Bölge denetimi gerektirmez.

Ayrıca bkz.