Ketika saya mencoba untuk menjalankan saya PowerShell script saya mendapatkan error ini:
File C:\Common\Scripts\hello.ps1 tidak dapat dimuat karena eksekusi script dinonaktifkan pada sistem ini. Silakan lihat "get-help about_signing" untuk rincian lebih lanjut. Pada baris:1 char:13
- .\halo.ps1 <<<<
- CategoryInfo : NotSpecified: (:) [], PSSecurityException
- FullyQualifiedErrorId : RuntimeException
Mulai Windows PowerShell dengan "Run as Administrator" opsi. Hanya anggota dari grup Administrator pada komputer dapat mengubah kebijakan eksekusi.
Mengaktifkan menjalankan unsigned script dengan memasukkan:
set-executionpolicy remotesigned
Ini akan memungkinkan menjalankan unsigned script yang anda tulis pada komputer lokal anda dan ditandatangani script dari Internet.
Lihat juga Menjalankan Script pada Microsoft TechNet Perpustakaan.
Kebijakan Eksekusi Default diatur ke terbatas, anda dapat melihatnya dengan mengetik:
Get-ExecutionPolicy
Anda harus ketik kode berikut ini untuk membuatnya pergi untuk tak terbatas mode:
Set-ExecutionPolicy unrestricted
Semoga ini bisa membantu
Di mesin saya yang saya gunakan untuk dev script, saya akan gunakan -tidak terbatas seperti di atas. Ketika menjalankan script saya namun, untuk pengguna akhir mesin, saya hanya akan memanggil powershell dengan -executionpolicy switch:
powershell.exe -noprofile -executionpolicy bypass -file .\script.ps1
Kita bisa mendapatkan status saat ini ExecutionPolicy dengan perintah di bawah ini:
Get-ExecutionPolicy;
Secara default adalah Dibatasi. Untuk memungkinkan pelaksanaan PowerShell Script yang kita butuhkan untuk mengatur ini ExecutionPolicy baik sebagai Memotong atau Terbatas.
Kita dapat menetapkan kebijakan untuk Pengguna Saat ini sebagai Memotong
atau tidak Terikat
dengan menggunakan salah satu dari berikut perintah PowerShell:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;
Terbatas kebijakan memuat semua file-file konfigurasi dan menjalankan semua script. Jika anda menjalankan aplikasi yang unsigned script yang didownload dari Internet, anda diminta untuk izin sebelum berjalan.
Sedangkan di Memotong kebijakan, tidak ada yang diblokir dan tidak ada peringatan atau petunjuk selama eksekusi script. Bypass ExecutionPolicy lebih santai dari yang tak Terbatas.
Tergantung pada versi Windows dan konfigurasi, anda mungkin memiliki peringatan berikut, bahkan di Terbatas
mode:
peringatan Keamanan Run hanya script yang anda percaya. Sedangkan script dari internet dapat berguna, ini script berpotensi dapat membahayakan komputer anda. Jika anda percaya script ini, gunakan Membuka-File cmdlet untuk memungkinkan script untuk menjalankan tanpa pesan peringatan ini. Apakah anda ingin menjalankan? [D] tidak berjalan [R] Jalankan sekali [S] Menangguhkan [?] Membantu (default adalah "D")
Solusinya adalah dengan menggunakan "memotong" kebijakan, diaktifkan dengan perintah berikut:
Set-ExecutionPolicy Bypass
Dari dokumentasi:
Bypass: Tidak diblokir dan tidak ada peringatan atau petunjuk.
Ini jelas tidak aman, silakan memahami risiko yang terlibat.
Reg key: Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell] "EnableScripts"=dword:00000001 "ExecutionPolicy"="Memotong"
dan:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell]
"EnableScripts"=dword:00000001 "ExecutionPolicy"="Unrestricted"
bekerja memang terlalu.
Untuk beberapa alasan cmdlet PowerShell tidak mengaktifkan lokal eksekusi secara global, hanya untuk pengguna lokal konteks. Jika saya mencoba untuk memulai script Powershell dari dalam CygWin's bash prompt, misalnya, yang berjalan sendiri di bawah konteks pengguna, itu tidak akan lari, memberikan "tidak ditandatangani secara digital" kesalahan. Jawabannya adalah untuk masuk ke Local Group Policy Editor -> Kebijakan Komputer Lokal -> Administrative Templates -> Komponen Windows -> Windows PowerShell dan double-klik pada 'Mengaktifkan Eksekusi Script'. Hal ini kemudian membiarkan saya mengubah ke 'Diaktifkan' dan kemudian eksekusi kebijakan "Memungkinkan skrip lokal dan remote ditandatangani script" dan itu bekerja secara global terlepas dari konteks pengguna.
Jawaban yang diterima adalah benar, tetapi kebijakan modifikasi ini hanya tersedia untuk saat ini contoh menjalankan Powershell, yang berarti sekali contoh dari Powershell adalah menutup. Kebijakan tersebut akan di-reset. Jika pengguna membuka kembali contoh lain dari Powershell, kebijakan default akan diterapkan yang Terbatas
Bagi saya, saya perlu menggunakan VisualStudio Kode konsol dan g++ dari cygwin untuk membangun hal-hal. Konsol ini menggunakan Powershell, dengan kebijakan default, tidak ada yang bisa dilakukan. Salah satu solusinya adalah mengubah kebijakan setiap konsol dipecat di VisualStudio Kode konsol, mungkin script untuk mengubah kebijakan.
Aku malas, maka solusi lain adalah ketika saya menjalankan Powershell di admin mode, mirip dengan apa yang diterima menjawab tidak. tapi dengan tambahan parameter yang perubahan nilai-nilai dalam Registry meja. Setelah itu dilakukan. Contoh lain dari Powershell akan menggunakan RemoteSigned
kebijakan secara default.
set-executionpolicy remotesigned -ruang Lingkup CurrentUser
Pengaturan kebijakan (benar) adalah pilihan terbaik tetapi saya berhasil sistem saya tidak memiliki kemampuan untuk mengubah kebijakan itu.
Bagi saya, pekerjaan sederhana-sekitar untuk mengubah kebijakan untuk membuka naskah di "PowerShell ISE", menyoroti kode (atau bagian dari kode) untuk menjalankan, dan kemudian klik "Menjalankan Seleksi" tombol (atau menggunakan shortcut F8).
Ini bukan solusi terbaik & tidak sedikit untuk mengotomatisasi tugas-tugas, tapi itu tidak memungkinkan saya menggunakan & utilitas dari PowerShell sementara tidak berjalan afoul dari saya ADALAH departemen.