File cannot be loaded because the execution of scripts is disabled on this system – Powershell Execution Policy

File cannot be loaded because the execution of scripts is disabled on this system. Please see “get-help about_signing” for more details. Powershell Execution Policy

Yukarıdaki hatayı bir powershell script çalıştırırken alma olasılığınız çok yüksek. Bunun nedeni işletim sistemine bağlı olarak değişiklik gösteren Powershell çalıştırma restrectionıdır. Konuya tamamen yabancı olanlar için örnek vermek gerekirse, bir nevi Windows üzerindeki User account control gibi düşünebilirsiniz.

.ps1 uzantılı powershell script çalıştırılabilmesi için işletim sistemi bazında script çalıştırmaya izin verilmesi gerektiğini söyledik. Peki mevcut durumu nasıl görüntüleyebiliriz. Detaylı açıklamaya geçmeden önce Script çalıştırıp çalıştıramayacağınızı görmek için Powershell üzerinde aşağıdaki kodu çalıştırmalısınız

Get-ExecutionPolicy

Bu komutu koşturduğunuzda powershell scripti için izin durumunuzu görüntüleyeceksiniz. Ben kendi bilgisayarımda script çalıştırabiliyorum çünkü Unrestricted olarak tanımlı.

Powershell execution policy

İşinize yarayacak diğer Powershell Makaleleri için aliortul.net/powershell

Powershell Execution Policy

Windows PowerShell komut dosyalarının Windows bilgisayarlarda çalıştırılıp çalıştırılamayacağını group policy ayarlayarak yaparsınız. Bir bilgisayardaki varsayılan yürütme politikası, işletim sistemi sürümüne bağlı olarak değişir. Mevcut yapılandırmadan emin olmak için yukarıda paylaştığım komutu Get-ExecutionPolicy kullanabilirsiniz.

Powershell ExecutionPolicy seçenekleri şunlardır:
Restricted – Hiçbir komut dosyasının çalıştırılmasına izin verilmez.
AllSigned – Komut dosyaları yalnızca dijital olarak imzalanmışlarsa çalıştırılabilir.
RemoteSigned – İndirilen komut dosyaları yalnızca dijital olarak imzalanmışlarsa çalıştırılabilir.
UnRestricted – Tüm komut dosyaları çalıştırılabilir, ancak indirilen imzasız komut dosyalarını çalıştırırken bir onay istemi görüntülenir.
Bypass – Tüm komut dosyaları istemler olmadan çalıştırılır.

File cannot be loaded because the execution of scripts is disabled on this system hatasını giderebilmek için en kolay kullanabileceğiniz iki opsiyon var. Aşağıdaki komutlardan birini kullanabilirsiniz. Bypass olan güvenlik perspektifinde daha az tercih edilir.

Set-ExecutionPolicy Unrestricted

Set-ExecutionPolicy Bypass

Eğer problem yaşarsanız -force parametresi ile birlikte kullanabilirsiniz. Set-ExecutionPolicy Unrestricted -Force şeklinde.

Tabi bu anlattığımız yöntem tek bir bilgisayar içindi eğer birden fazla bilgisayarda Powershell Execution Policy ayarlamak gerekiyorsa aşağıdaki Group Policy ayarını basabilirsiniz

Computer Configuration\Policies\Administrative Templates\Windows Components\Windows PowerShell\Turn on Script Execution