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 grup ilkesi ayarını 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 komut dosyasını ç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 belirlemesine 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ülse Get-ExecutionPolicyUnrestricted de, 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 sizi uyarır.
    • İmzalı ancak kötü amaçlı betikler çalıştırma riskleri.
  • 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.
    • e-posta ve anlık ileti programlarını içeren internetten indirilen 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, internetten 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ı İnternet yollarından ayırmayan 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 düşük bir öncelik düzeyinde daha kısıtlayıcı bir ilke 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 İlkesi tarafından ayarlanır.

  • UserPolicy

    Bilgisayarın geçerli kullanıcısı için bir Grup İlkesi 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 etkin 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'dır.

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>

Örneğin:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

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

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

Örneğin:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Yürütme ilkesini değiştirme komutu başarılı olabilir ancak yine de etkin 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

Herhangi bir kapsamda hiçbir yürütme ilkesi ayarlanmadıysa, etkin yürütme ilkesi Windows istemcileri için varsayılan olan 'dir Restricted.

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 gibi cmd.exe komut satırından PowerShell'i başlatın ve yürütme ilkesini ayarlamak için executionPolicy parametresini pwsh.exe kullanın.

Örneğin:

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, 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 İlkesi 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 İlkesi 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 etkindir.

PowerShellExecutionPolicy.adm ve PowerShellExecutionPolicy.admx dosyaları, Betik Yürütmeyi Aç ilkesini aşağıdaki yollarda, grup ilkesi Düzenleyicisi'ndeki Bilgisayar Yapılandırması ve Kullanıcı Yapılandırması düğümlerine 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: LocalMachine
Execution Policy: CurrentUser

İ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ı 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, cmdlet'in Get-Item Stream parametresini kullanarak İnternet'ten indirildiği için engellenen dosyaları algılayabilirsiniz. Komut dosyalarını PowerShell'de Unblock-File çalıştırabilmek için cmdlet'ini kullanarak engellemesini kaldırı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 üzerinde ç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ı, sorundan kaçınan bir Bölge denetimi gerektirmez.

Ayrıca bkz.