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.
Windows bilgisayarda, yerel bilgisayar için, geçerli kullanıcı veya belirli bir oturum için bir yürütme ilkesi ayarlayabilirsiniz. Ayrıca, bilgisayarlar ve kullanıcılara yönelik yürütme ilkeleri ayarlamak için bir grup ilkesi ayarı kullanabilirsiniz.
Yerel bilgisayar ve geçerli kullanıcı için yürütme ilkeleri kayıt defterinde saklanı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 kaybedilir.
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ıramayacak komut satırına komut satırı içeriğini yazarak bir ilkeyi kolayca atlayabilir. Bunun yerine, yürütme ilkesi kullanıcıların temel kuralları belirlemesine ve bunları yanlışlıkla ihlal etmesini engeller.
Windows olmayan bilgisayarlarda varsayılan yürütme ilkesi olur Unrestricted ve değiştirilemez. Set-ExecutionPolicyCmdlet kullanılabilir, ancak PowerShell desteklenmeyen bir konsol iletisi görüntülüyor. Get-ExecutionPolicy Unrestricted Windows platformları, Bypass bu platformlar Windows Güvenliği bölgelerini uygulamadığından, davranış gerçekten eşleştirilir.
PowerShell yürütme ilkeleri
bu ilkelerin zorlanması yalnızca Windows platformlarında oluşur. PowerShell yürütme ilkeleri aşağıdaki gibidir:
AllSigned
- Betikler çalıştırılabilir.
- Tüm betiklerin ve yapılandırma dosyalarının, yerel bilgisayarda yazdığınız betikler dahil olmak üzere, güvenilen bir yayımcı tarafından imzalanmasını gerektirir.
- Henüz güvenilir veya güvenilmeyen olarak sınıflandırmadığınız yayımcıların betikleri çalıştırmadan önce sizi uyarır.
- İmzalı, ancak kötü amaçlı betikler çalıştıran riskler.
Bypass
- Hiçbir şey engellenmiyor ve hiçbir uyarı ya da istem yok.
- Bu yürütme ilkesi, bir PowerShell betiğinin daha büyük bir uygulamada yerleşik olduğu ve PowerShell 'in kendi güvenlik modeline sahip bir programın temeli olduğu yapılandırmalara yönelik olarak 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 mesajlaşma programlarını içeren internet 'ten indirilen betikler ve yapılandırma dosyalarındaki güvenilir bir yayımcıdan dijital imza gerektirir.
- , Yerel bilgisayarda yazılan ve internet 'ten indirmeyen betiklerin dijital imzalarını gerektirmez.
- , Cmdlet 'leri kullanarak gibi betikler engellendiyse, internet 'ten indirilen ve imzalı olmayan komut dosyalarını çalıştırır
Unblock-File. - İnternet ve imzalı betikler dışında, kötü amaçlı olabilecek kaynaklardan imzasız betikleri çalıştıran riskler.
Restricted
- Windows istemci bilgisayarları için varsayılan yürütme ilkesi.
- Tek tek komutlara izin verir, ancak betiklerine izin vermez.
- Biçimlendirme ve yapılandırma dosyaları (
.ps1xml), modül betik dosyaları (.psm1) ve PowerShell profilleri () dahil olmak üzere tüm betik dosyalarının çalıştırılmasını önler.ps1.
Undefined
- Geçerli kapsamda ayarlanmış bir yürütme ilkesi yok.
- tüm kapsamlardaki yürütme ilkesi ise Undefined , etkin yürütme ilkesi Restricted Windows istemciler ve Windows sunucusu için remotesigned içindir.
Unrestricted
- Windows olmayan bilgisayarlar için varsayılan yürütme ilkesi ve değiştirilemez.
- İmzasız betikler çalıştırılabilir. Kötü amaçlı betikleri çalıştırmanın bir 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 kullanmayan sistemlerde, UNC yolu tarafından tanımlanan betiklerin RemoteSigned yürütme ilkesiyle çalıştırılmasına izin verilmiyor olabilir.
Yürütme ilkesi kapsamı
Yalnızca belirli bir kapsamda etkin olan bir yürütme ilkesi ayarlayabilirsiniz.
İçin geçerli değerler Scope MachinePolicy , UserPolicy, Process , CurrentUser ve LocalMachine. Bir yürütme ilkesi ayarlanırken, varsayılan değer LocalMachine 'dir.
Scope Değerler öncelik sırasına göre listelenir. Daha kısıtlayıcı bir ilke daha düşük bir öncelik düzeyinde ayarlanmış olsa bile, öncelik alan ilke 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 göre ayarlanır.
UserPolicy
Bilgisayarın geçerli kullanıcısı için bir grup ilkesi göre ayarlanır.
Process
Process Kapsam yalnızca geçerli PowerShell oturumunu etkiler. Yürütme ilkesi, kayıt defteri yerine ortam değişkenine kaydedilir $env:PSExecutionPolicyPreference . PowerShell oturumu kapatıldığında, değişkeni ve değeri 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.
Yürütme ilkesini PowerShell ile yönetme
Geçerli PowerShell oturumunun etkili Yürütme ilkesini almak için Get-ExecutionPolicy cmdlet 'ini kullanın.
Aşağıdaki komut geçerli yürütme ilkesini alır:
Get-ExecutionPolicy
Geçerli oturumu etkileyen tüm yürütme ilkelerini almak ve bunları öncelik sırasıyla göstermek için:
Get-ExecutionPolicy -List
Sonuç aşağıdaki örnek çıkışa benzer şekilde görünür:
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine AllSigned
Bu durumda, geçerli kullanıcı için yürütme ilkesi yerel bilgisayar için ayarlanan yürütme ilkesi üzerinde öncelikli olduğundan, etkin yürütme ilkesi RemoteSigned ' dir.
Belirli bir kapsamın yürütme ilkesi kümesini almak için, Scope parametresini kullanın Get-ExecutionPolicy .
Ö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 Set-ExecutionPolicy cmdlet 'ini kullanın. Değişiklik hemen geçerli olur. 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 yeniden değiştirene kadar etkin kalır.
Kapsam için yürütme ilkesini ayarlarsanız Process , kayıt defterine kaydedilmez. Yürütme ilkesi, geçerli işlem ve alt işlemler kapatılıncaya kadar tutulur.
Not
Windows Windows Vista ve 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
Belirli bir kapsamdaki Yürütme ilkesini ayarlamak için:
Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>
Örnek:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Bir yürütme ilkesini değiştirme komutu başarılı olabilir ancak yine de etkili Yürütme ilkesini değiştirmez.
Örneğin, yerel bilgisayar için yürütme ilkesini ayarlayan bir komut başarılı olabilir ancak geçerli kullanıcı için yürütme ilkesi tarafından geçersiz kılınabilir.
Yürütme ilkesini kaldır
Belirli bir kapsamın Yürütme ilkesini kaldırmak için, yürütme ilkesini olarak ayarlayın Undefined .
Ö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 için yürütme ilkesini kaldırmak için Scope :
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
herhangi bir kapsamda hiçbir yürütme ilkesi ayarlanmamışsa, Restricted Windows istemcileri için varsayılan olan geçerli yürütme ilkesi olur.
Tek bir oturum için farklı bir ilke ayarlama
pwsh.exe Yeni bir PowerShell oturumu için bir yürütme ilkesi ayarlamak üzere öğesinin ExecutionPolicy parametresini kullanabilirsiniz. İlke yalnızca geçerli oturumu ve alt oturumları etkiler.
Yeni bir oturumun yürütme ilkesini ayarlamak için PowerShell 'den veya PowerShell 'den gibi komut satırında PowerShell 'i başlatın cmd.exe ve ardından Yürütme ilkesini ayarlamak Için ExecutionPolicy parametresini kullanın pwsh.exe .
Örnek:
pwsh.exe -ExecutionPolicy AllSigned
Ayarlandığı yürütme ilkesi kayıt defterinde depolanmış değildir. Bunun yerine, ortam $env:PSExecutionPolicyPreference değişkende depolanır. İlkenin ayar olduğu oturumu kapatarak değişkeni silinir. Değişken değerini düzenleyerek ilkeyi değiştiremezsiniz.
Oturum sırasında, oturum için ayarlanmış yürütme ilkesi, yerel bilgisayar veya geçerli kullanıcı için kayıt defterinde ayarlanmış bir yürütme ilkesine göre önceliklidir. Ancak, bir ilke kullanılarak ayarlanmış yürütme ilkesine göre öncelikli grup ilkesi.
Yürütme grup ilkesi yönetmek için grup ilkesi'i kullanma
Kuruluşınızdaki bilgisayarların yürütme grup ilkesi için Betik Yürütmeyi Aç ayarını kullanabilirsiniz. Bu grup ilkesi, PowerShell'de tüm kapsamlarda ayarlanmış yürütme ilkelerini geçersiz kılar.
Betik Yürütmeyi Aç ilke ayarları aşağıdaki gibidir:
Betik Yürütmeyi Aç'ı devre dışı bıraksanız betikler çalıştırlanmaz. Bu, yürütme ilkesine Restricted eşdeğerdir.
Betik Yürütmeyi Aç'ı etkinleştirirseniz bir yürütme ilkesi seçin. Aşağıdaki 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 uzak imzalı betiklere izin ver Remotesigned Yalnızca imzalı betiklere izin ver AllSigned Betik Yürütmeyi Aç yapılandırılmamışsa herhangi bir etkisi yoktur. PowerShell'de ayarlanmış yürütme ilkesi etkilidir.
PowerShellExecutionPolicy.adm ve PowerShellExecutionPolicy.admx dosyaları, aşağıdaki yollarda grup ilkesi Editor'daki Bilgisayar Yapılandırması ve Kullanıcı Yapılandırması düğümlerine Betik Yürütmeyi Aç ilkesi ekler.
Windows XP ve Windows Server 2003 için:
Administrative Templates\Windows Components\Windows PowerShell
Windows Vista ve sonraki sürümleri için Windows:
Administrative Templates\Classic Administrative Templates\Windows Components\Windows PowerShell
Bilgisayar Yapılandırması düğümünde ayarlanmış ilkeler, Kullanıcı Yapılandırması düğümünde ayarlanmış ilkelere göre önceliklidir.
Daha fazla bilgi için bkz. about_Group_Policy_Settings.
Yürütme ilkesi önceliği
Bir oturum için geçerli yürütme ilkesi belirlenirken, PowerShell 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
Bu Windows, Internet Explorer ve Microsoft Edge indirilen dosyalara alternatif bir veri akışı ekler. Bu, dosyayı "İnternet'den geliyor" olarak işaretler. PowerShell yürütme ilkeniz RemoteSigned ise, PowerShell e-posta ve anlık mesajlaşma programları içeren internetten indirilen imzasız betikleri çalıştırmaz.
Betiği imzalar veya yürütme ilkesi değiştirmeden imzalanmamış bir betik çalıştırmayı seçersiniz.
PowerShell 3.0'dan itibaren, internetten indirildikten sonra engellenen dosyaları algılamak için Get-Item cmdlet'in Stream parametresini kullanabilirsiniz. Unblock-FileBetiklerin engelini kaldırmak için cmdlet'ini kullanarak bunları PowerShell'de çalıştırabilirsiniz.
Daha fazla bilgi için bkz. about_Signing, Get-Itemve Unblock-File.
Not
Diğer dosya indirme yöntemleri, dosyaları İnternet Bölgesinden geliyor olarak işaretlemez. Bazı örnekler:
curl.exeInvoke-RestMethodInvoke-WebRequest
Windows Server Core ve Window Nano Server'da yürütme ilkesi
PowerShell 6 Belirli koşullar altında Windows Sunucu Çekirdeği Windows Nano Sunucu'da çalıştırıldıkları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, betik dosyasının Windows doğrulamak için Windows Desktop Shell ' de ( explorer.exe ) API'leri kullanır. Windows Kabuğu, Windows Sunucu Çekirdeği'nde ve Windows Nano Sunucu'da kullanılamaz.
Windows Desktop Shell kullanılamıyorsa veya yanıt vermiyorsa, Windows sistemlerde de bu hatayı alabilirsiniz. Örneğin, oturum açma sırasında PowerShell oturum açma betiği Windows Desktop hazır olmadan yürütmeyi başlatarak hataya neden olabilir.
ByPass veya AllSigned yürütme ilkesi kullanmak sorundan kaçınan bir Bölge denetimi gerektirmez.