Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 PowerShell yapılandırma dosyalarında 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 ilkesi Unrestricted ve değiştirilemez.
Set-ExecutionPolicy cmdlet'i kullanılabilir, ancak PowerShell desteklenmediğini belirten bir konsol iletisi görüntüler. Windows dışı platformlarda, Get-ExecutionPolicy her ne kadar Unrestricted döndürse de, bu platformlar Windows Güvenlik Bölgelerini uygulamadığı için davranış aslında Bypass ile eşleşir.
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.
- Henüz güvenilir ya da güvensiz olarak sınıflandırmadığınız yayımcılardan gelen betikleri çalıştırmadan önce sizi uyarır.
- İmzalı ancak kötü amaçlı betikleri çalıştırmanın 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.
- Windows istemcileri ve sunucuları için RemoteSigned .
RemoteSigned- Windows 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.
- İnternet'ten indirilen ve imzalanmamış betikleri çalıştırır; eğer betiklerin engeli, örneğin
Unblock-Filecmdlet'i kullanılarak kaldırılırsa. - İnternet dışındaki kaynaklardan imzalanmamış betikleri ve kötü amaçlı olabilecek imzalı betikleri çalıştırma riski.
Restricted- Tek tek komutlara izin verir, ancak betiklere izin vermez.
- Biçimlendirme ve yapılandırma dosyaları (
.ps1xml), modül betik dosyaları (.psm1) ve PowerShell profilleri (.ps1) dahil olmak üzere tüm betik dosyalarının çalıştırılmasını önler.
Undefined- Geçerli kapsamda ayarlanmış bir yürütme ilkesi yok.
- Tüm kapsamlardaki yürütme ilkesi Undefinedise, Windows istemcileri için etkin yürütme ilkesi Restricted ve Windows Server için RemoteSigned olur.
Unrestricted- Windows olmayan bilgisayarlar için varsayılan yürütme ilkesidir ve değiştirilemez.
- İmzasız betikler çalıştırılabiliyor. Kötü amaçlı komut dosyası ç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ırt etmeyen sistemlerde, UNC yolu tarafından tanımlanan betiklerin RemoteSigned uygulama 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.
Scope için geçerli değerler MachinePolicy, UserPolicy, Process, CurrentUserve LocalMachine'dir. LocalMachine, bir yürütme ilkesi ayarlanırken varsayılan değerdir.
Scope değerleri öncelik sırasına göre listelenir. Geçerli oturumda etkili olan ilke, öncelik alan ilkedir, daha düşük bir öncelik düzeyinde daha kısıtlayıcı bir ilke ayarlansa bile.
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.
Kullanıcı Politikası
Bilgisayarın mevcut kullanıcısı için bir Grup İlkesi ile ayarlanmıştır.
Process
Process kapsamı yalnızca geçerli PowerShell oturumunu etkiler. Yürütme ilkesi, yapılandırma dosyası yerine
$Env:PSExecutionPolicyPreferenceortam değişkenine kaydedilir. PowerShell oturumu kapatıldığında değişken ve değer silinir.MevcutKullanıcı
Yürütme ilkesi yalnızca geçerli kullanıcıyı etkiler. CurrentUser yapılandırma dosyasında depolanır.
LocalMachine
Uygulama politikası mevcut bilgisayardaki tüm kullanıcıları etkiler. AllUsers yapılandırma dosyası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 Get-ExecutionPolicy cmdlet'ini 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.
Belirli bir kapsama yönelik yürütme ilkesini ayarlamak için ScopeGet-ExecutionPolicy parametresini kullanı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 Set-ExecutionPolicy cmdlet'ini kullanın. Değişiklik hemen geçerli olacak. PowerShell'i yeniden başlatmanız gerekmez.
LocalMachine veya
Process kapsamı için yürütme ilkesini ayarlarsanız, yapılandırma dosyasına kaydedilmez. Mevcut işlem ve alt işlemler kapatılana kadar yürütme ilkesi korunmaya devam edilir.
Not
Windows Vista'da ve Windows'un sonraki sürümlerinde, yerel bilgisayarın yürütme ilkesini değiştiren komutları çalıştırmak için LocalMachine kapsamını, 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 Undefinedolarak ayarlayı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
Scopeçalışma ilkesini kaldırmak için:
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
Hiçbir kapsamda hiçbir yürütme ilkesi ayarlı değilse, etkin yürütme ilkesi windows istemcileri için varsayılan olan Restrictedolur.
Bir oturum için farklı bir ilke ayarlama
yeni bir PowerShell oturumu için yürütme ilkesi ayarlamak üzere pwsh.exe parametresini kullanabilirsiniz. İlke yalnızca geçerli oturumu ve alt oturumları etkiler.
Yeni bir oturumun yürütme ilkesini ayarlamak için PowerShell'i
Örneğin:
pwsh.exe -ExecutionPolicy AllSigned
Ayarladığınız yürütme ilkesi yapılandırma dosyasında depolanmaz.
Bunun yerine, $Env:PSExecutionPolicyPreference ortam değişkeninde 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 yapılandırma dosyasında ayarlanan bir yürütme ilkesinden önceliklidir. Ancak, grup ilkesi kullanılarak ayarlanan yürütme ilkesinden öncelikli değildir.
Yürütme ilkesini yönetmek için Grup İlkesi'ni kullanma
Kuruluşunuzdaki bilgisayarların yürütme ilkesini yönetmek için Betik Yürütme Grup İlkesini Aç 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ütmeyidevre dışı bırakırsanız betikler çalışmaz. Bu, Restricted yürütme ilkesine eşdeğerdir.
Eğer Betik Yürütmeyi Açseçeneğini 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 imzalı betiklere izin ver Uzaktan İmzalı Yalnızca imzalı komut dosyalarına 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 İlkesi Düzenleyicisi'ndeki Bilgisayar Yapılandırması ve Kullanıcı Yapılandırması düğümlerine aşağıdaki yolda ekler:
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 politikası öncelik sırası
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
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 parametresini kullanarak İnternet'ten indirildiği için engellenen dosyaları algılayabilirsiniz. Betikleri PowerShell'de çalıştırabilmek için engellemesini kaldırmak amacıyla Unblock-File cmdlet'ini kullanın.
Daha fazla bilgi için bkz. about_Signing, Get-Itemve Unblock-File.
Not
Dosyaları indirmenin diğer yöntemleri, dosyaları İnternet Bölgesi'nden geliyor olarak işaretlemeyebilir. Bazı örnekler şunlardır:
curl.exeInvoke-RestMethodInvoke-WebRequest
Windows Server Core ve Windows 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 komut dosyasının bölgesini doğrulamak için Windows Masaüstü Kabuk'taki (explorer.exe) API'leri kullanır. Windows Kabuğu, Windows Server Core ve Windows Nano Server'da mevcut değildir.
Windows Masaüstü Kabuğu kullanılamaz veya yanıt vermez durumda ise, bu hatayı herhangi bir Windows sisteminde 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ı, soruna yol açan bir Bölge denetimi ihtiyacını ortadan kaldırır.
Ayrıca bakınız
- about_Environment_Variables
- about_Group_Policy_Settings
- about_Pwsh
- hakkında_İmzalama
- get-executionpolicy
- Set-ExecutionPolicy
- Öğe al
- Dosya Engellemesini Kaldır
PowerShell