Anasayfa Makale Pratik Windows PowerShell Set-ExecutionPolicy Hatası Nasıl Çözülür?

Windows PowerShell Set-ExecutionPolicy Hatası Nasıl Çözülür?

Windows PowerShell’de Set-ExecutionPolicy komutlarını yürütürken karşılaştığınız hataları nasıl çözebileceğinizi anlatıyoruz.

Set-ExecutionPolicy, Windows PowerShell komut yürütme seçeneklerini değiştirmeyi sağlar. Güvenlik önlemi olarak script’lerin 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ğız.

Yürütme Politikası Seçenekleri

  • Restricted: Yapılandırma dosyalarını ya da script’leri 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 script’leri yürütür. Yerel bilgisayarınızda yazdığınız script’leri de içerir.
  • RemoteSigned: İnternet üzerinden indirilmiş yapılandırma dosyaları ve script’lerin güvenilir bir geliştirici tarafından imzalanmasını gerektirir.
  • Unrestricted: Tüm yapılandırma dosyalarını ve script’leri 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 PowerShell’e 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.

Set-ExecutionPolicy "RemoteSigned" -Scope Process -Confirm:$false

Set-ExecutionPolicy "RemoteSigned" -Scope CurrentUser -Confirm:$false

Eğer örnekteki gibi CurrentUser’da 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.

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell

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.