- 8 Eki 2008
- 13,570
- 1
Windows PowerShell komut yürütme seçeneklerini değiştirmeyi, Set-ExecutionPolicy sağlar. Güvenlik önlemi olarak scriptlerin yürütülmesi kısıtlanmıştır ve çalıştırılmadan önce dijital olarak imzalanmış olması gerekir.
PowerShell üzerinden Set-ExecutionPolicy ayarını değiştirirken aşağıdaki gibi bir hatayla karşılaşmış olabilirsiniz.
Set-ExecutionPolicy : Windows PowerShell updated your execution policy successfully, but the setting is overridden by a policy defined at a more specific scope. Due to the override, your shell will retain its current effective execution policy of Unrestricted. Type Get-ExecutionPolicy -List to view your execution policy settings. For more information, please see Get-Help Set-ExecutionPolicy.
Bu hata yürütme politikasını etkileyen daha özel bir ayar olduğunu ve bu yüzden yaptığınız değişikliğin başarıyla yürütülse de geçersiz olduğunu belirtiyor. Öncelikle yürütme politikası ayarlarını ve daha sonra sorunu nasıl çözebileceğinizi anlatacağım değerli turkhackteam üyeleri.
Yürütme Politikası Seçenekleri;
- Restricted: Yapılandırma dosyalarını ya da scriptleri yürütmez. Bu varsayılan yürütme politikasıdır.
- AllSigned: Güvenilir bir geliştirici tarafından imzalanmış yapılandırma dosyalarını ve scriptleri yürütür. Yerel bilgisayarınızda yazdığınız scriptleri de içerir.
- RemoteSigned: İnternet üzerinden indirilmiş yapılandırma dosyaları ve scriptlerin güvenilir bir geliştirici tarafından imzalanmasını gerektirir.
- Unrestricted: Tüm yapılandırma dosyalarını ve scriptleri yürütür. İnternet üzerinden imzalanmamış bir script yürütürseniz çalıştırmadan önce izin verip vermediğiniz sorulacaktır.
- Bypass: Herhangi bir şey engellenmeyecektir ya da uyarı verilmeyecektir.
- Undefined: Halen geçerli atanmış yürütme politikasını kaldırır.
Sorun Çözümü;
Belirtilen hatayı aldığınızda PowerShelle aşağıdaki komutu girip yürütme politikalarını Get-ExecutionPolicy -List komutuyla görüntülediğinizde karşınıza aşağıdaki gibi bir çıktı gelebilir.
MachinePolicy = RemoteSigned
UserPolicy = Undefined
CurrentUser = Unrestricted
LocalMachine = RemoteSigned
Örneğin burada CurrentUser için Unrestricted yürütme politikası geçerli olduğu için, girdiğiniz komutla genel bir değişiklik yapmak isteseniz de size izin vermeyip bahsedilen hatayı gösterecektir.
Sorunu çözmek için yönetici haklarıyla çalıştırılmış PowerShell penceresine aşağıdaki komutları sırasıyla girmeniz gerekir.
Kod:
[CENTER]Set-ExecutionPolicy [COLOR="Lime"]"RemoteSigned"[/COLOR] -Scope Process -Confirm:$false[/CENTER]
Kod:
[CENTER]Set-ExecutionPolicy [COLOR="Lime"]"RemoteSigned"[/COLOR] -Scope [COLOR="Lime"]CurrentUser[/COLOR] -Confirm:$false[/CENTER]
Eğer örnekteki gibi CurrentUserda değil de başka bir grupta hataya yol açabilecek farklılık varsa, yukarıda CurrentUser yazan yeri ona göre değiştirerek de komutu girebilirsiniz. Eğer RemoteSigned yerine başka bir yürütme politikası kullanmak istiyorsanız, yine bu değeri istediğiniz ile değiştirip komutu yürütebilirsiniz.
Sorun bu yolla çözülmediyse Win + R tuş kombinasyonunu kullanarak Çalıştırı açın ve regedit.exe yazarak kayıt defterini açın. Ardından aşağıdaki yolu izleyin.
Kod:
[CENTER]HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell[/CENTER]
Burada yer alan ExecutionPolicy değerini sıfırlayın ya da silin. Yürütme politikasını değiştirmek istediğiniz komutu tekrar girin. İşlem bu kadar!