Sebagian besar jawaban yang ada menjelaskan Bagaimana , tetapi sangat sedikit yang menjelaskan Mengapa . Dan sebelum Anda berkeliling mengeksekusi kode dari orang asing di Internet, terutama kode yang menonaktifkan langkah-langkah keamanan, Anda harus memahami apa yang Anda lakukan. Jadi, inilah sedikit lebih detail tentang masalah ini.
Dari TechNet Tentang Halaman Kebijakan Eksekusi :
Kebijakan eksekusi Windows PowerShell memungkinkan Anda menentukan kondisi di mana Windows PowerShell memuat file konfigurasi dan menjalankan skrip.
Manfaat yang, sebagaimana disebutkan oleh Dasar-Dasar PowerShell - Kebijakan Eksekusi dan Penandatanganan Kode , adalah:
- Kontrol Eksekusi - Kontrol tingkat kepercayaan untuk mengeksekusi skrip.
- Command Highjack - Mencegah injeksi perintah di jalur saya.
- Identity - Apakah skrip dibuat dan ditandatangani oleh pengembang yang saya percayai dan / atau ditandatangani dengan sertifikat dari Otoritas Sertifikat yang saya percayai.
- Integritas - Skrip tidak dapat dimodifikasi oleh malware atau pengguna jahat.
Untuk memeriksa kebijakan eksekusi Anda saat ini, Anda dapat menjalankan Get-ExecutionPolicy
. Tapi Anda mungkin di sini karena Anda ingin mengubahnya.
Untuk melakukannya, Anda akan menjalankan Set-ExecutionPolicy
cmdlet.
Anda akan memiliki dua keputusan besar yang harus diambil saat memperbarui kebijakan eksekusi.
Jenis Kebijakan Eksekusi:
Restricted
† - Tidak ada Skrip lokal, jarak jauh atau yang diunduh yang dapat dieksekusi pada sistem.
AllSigned
- Semua skrip yang dijalankan harus ditandatangani secara digital.
RemoteSigned
- Semua skrip jarak jauh (UNC) atau yang diunduh harus ditandatangani.
Unrestricted
- Tidak diperlukan tanda tangan untuk semua jenis skrip.
Lingkup Perubahan baru
LocalMachine
† - Kebijakan eksekusi mempengaruhi semua pengguna komputer.
CurrentUser
- Kebijakan eksekusi hanya memengaruhi pengguna saat ini.
Process
- Kebijakan eksekusi hanya memengaruhi proses Windows PowerShell saat ini.
† = Default
Misalnya : jika Anda ingin mengubah kebijakan menjadi RemoteSigned hanya untuk CurrentUser, Anda akan menjalankan perintah berikut:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Catatan : Untuk mengubah kebijakan Eksekusi, Anda harus menjalankan PowerShell Sebagai Adminstrator . Jika Anda berada dalam mode biasa dan mencoba untuk mengubah kebijakan eksekusi, Anda akan mendapatkan kesalahan berikut:
Akses ke kunci registri 'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell' ditolak. Untuk mengubah kebijakan eksekusi untuk lingkup default (LocalMachine), mulai Windows PowerShell dengan opsi "Run as administrator".
Jika Anda ingin memperketat pembatasan internal pada skrip Anda sendiri yang belum diunduh dari Internet (atau setidaknya tidak mengandung metadata UNC), Anda dapat memaksa kebijakan untuk hanya menjalankan sripts yang ditandatangani. Untuk menandatangani skrip Anda sendiri, Anda dapat mengikuti instruksi pada artikel Scott Hanselman tentang Menandatangani Skrip PowerShell .
Catatan : Kebanyakan orang cenderung mendapatkan kesalahan ini setiap kali mereka membuka Powershell karena hal pertama yang PS coba lakukan ketika diluncurkan adalah menjalankan skrip profil pengguna Anda yang mengatur lingkungan Anda sesuka Anda.
File biasanya terletak di:
%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
Anda dapat menemukan lokasi yang tepat dengan menjalankan variabel PowerShell
$profile
Jika tidak ada yang Anda pedulikan di profil, dan tidak ingin repot dengan pengaturan keamanan Anda, Anda bisa menghapusnya dan PowerShell tidak akan menemukan apa pun yang tidak dapat dieksekusi.