Pertanyaan PowerShell mengatakan "eksekusi skrip dinonaktifkan pada sistem ini."


Saya mencoba menjalankan file .cmd yang memanggil skrip PowerShell dari command prompt, dan saya mendapatkan kesalahan di bawah ini:

Management_Install.ps1 tidak dapat dimuat karena eksekusi skrip dinonaktifkan pada sistem ini.

Saya telah berlari set-executionpolicy unrestricted dan ketika saya lari get-executionpolicy dari PowerShell yang saya dapatkan unrestricted kembali.

// Output dari Powershell

PS C: \ Users \ Administrator> dapatkan-eksekusi kebijakan

Tidak dibatasi

// Output dari DOS

C: \ Projects \ Microsoft.Practices.ESB \ Source \ Samples \ Management Portal \ Instal \ Scr

ipts> powershell. \ Management_Install.ps1 1

PERINGATAN: Menjalankan x86 PowerShell ...

File C: \ Projects \ Microsoft.Practices.ESB \ Source \ Samples \ Management Portal \ Install \ Scripts \ Management_Install.ps1 tidak dapat dimuat karena eksekusi skrip dinonaktifkan pada sistem ini. Silakan lihat "get-help about_signing" untuk detail lebih lanjut.

Pada baris: 1 arang: 25

  • . \ Management_Install.ps1 <<<< 1

    • CategoryInfo: NotSpecified: (:) [], PSSecurityException

    • FullyQualifiedErrorId: RuntimeException

C: \ Projects \ Microsoft.Practices.ESB \ Source \ Samples \ Management Portal \ Install \ Scripts> jeda

Tekan tombol apa saja untuk melanjutkan . . .

Sistemnya adalah Windows Server 2008 R2.

Apa yang saya lakukan salah?


1280
2017-10-27 21:39


asal


Jawaban:


Jika Anda menggunakan Windows Server 2008 R2 maka ada sebuah x64 dan x86 versi PowerShell yang keduanya harus menetapkan kebijakan eksekusi mereka. Apakah Anda menetapkan kebijakan eksekusi pada kedua host?

Sebagai sebuah Administrator, Anda dapat mengatur kebijakan eksekusi dengan mengetik ini ke jendela PowerShell Anda:

Set-ExecutionPolicy RemoteSigned

Untuk informasi lebih lanjut, lihat Menggunakan Cmdlet Set-ExecutionPolicy.


1694
2017-10-28 01:16



Anda dapat mengabaikan kebijakan ini dengan menambahkan -ExecutionPolicy ByPass saat menjalankan PowerShell

powershell -ExecutionPolicy ByPass -File script.ps1

541
2018-02-06 21:28



Saya memiliki masalah serupa dan mencatat bahwa default cmd di Windows Server 2012, menjalankan x64 satu.

Untuk Windows 7, Windows 8, Windows Server 2008 R2 atau Windows Server 2012, jalankan perintah berikut sebagai Administrator:

x86 (32 bit)
Buka C:\Windows\SysWOW64\cmd.exe
Jalankan perintahnya powershell Set-ExecutionPolicy RemoteSigned

x64 (64 bit)
Buka C:\Windows\system32\cmd.exe
Jalankan perintahnya powershell Set-ExecutionPolicy RemoteSigned

Anda dapat memeriksa mode menggunakan

  • Di CMD: echo %PROCESSOR_ARCHITECTURE%
  • Di Powershell: [Environment]::Is64BitProcess

Referensi:
MSDN - Kebijakan eksekusi Windows PowerShell
Windows - 32bit vs 64bit penjelasan direktori


108
2017-08-30 13:10



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 persis apa yang Anda lakukan. Jadi inilah sedikit lebih detail tentang masalah ini.

Dari TechNet Tentang Kebijakan Eksekusi Halaman:

Kebijakan eksekusi Windows PowerShell memungkinkan Anda menentukan kondisi di mana Windows PowerShell memuat file konfigurasi dan menjalankan skrip.

Manfaatnya, seperti yang disebutkan oleh PowerShell Basics - Kebijakan Eksekusi dan Penandatanganan Kode, adalah:

  • Kontrol Eksekusi - Kontrol tingkat kepercayaan untuk menjalankan skrip.
  • Command Highjack - Mencegah injeksi perintah di jalan saya.
  • Identitas - Apakah skrip dibuat dan ditandatangani oleh pengembang yang saya percaya dan / atau yang 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 menjalankannya Get-ExecutionPolicy. Tetapi Anda mungkin di sini karena Anda ingin mengubahnya.

Untuk melakukannya Anda akan menjalankan Set-ExecutionPolicy cmdlet.

Anda akan memiliki dua keputusan besar yang harus dibuat ketika memperbarui kebijakan eksekusi.

Tipe Kebijakan Eksekusi:

  • Restricted - Tidak ada Script baik lokal, remote atau diunduh yang dapat dijalankan pada sistem.
  • AllSigned - Semua skrip yang dijalankan harus ditandatangani secara digital.
  • RemoteSigned - Semua skrip jarak jauh (UNC) atau yang diunduh harus ditandatangani.
  • Unrestricted - Tidak ada tanda tangan untuk jenis skrip apa pun yang diperlukan.

Cakupan Perubahan baru

  • LocalMachine - Kebijakan eksekusi mempengaruhi semua pengguna komputer.
  • CurrentUser - Kebijakan eksekusi hanya mempengaruhi pengguna saat ini.
  • Process - Kebijakan eksekusi hanya mempengaruhi proses Windows PowerShell saat ini.

† = Default

Sebagai contoh: jika Anda ingin mengubah kebijakan ke 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 reguler dan mencoba 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 ruang lingkup default (LocalMachine), mulai Windows PowerShell dengan opsi "Jalankan sebagai administrator".

Jika Anda ingin memperketat pembatasan internal pada skrip Anda yang belum diunduh dari Internet (atau setidaknya tidak mengandung metadata UNC), Anda dapat memaksa kebijakan untuk hanya menjalankan sript yang telah ditandatangani. Untuk menandatangani skrip Anda sendiri, Anda bisa mengikuti petunjuk di artikel Scott Hanselman 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 mengeksekusi skrip profil pengguna Anda yang mengatur lingkungan Anda namun Anda menyukainya.

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 dijalankan.


90
2017-11-16 08:05



Di Windows 7:

Pergi ke Start Menu dan cari "Windows PowerShell ISE".

Klik kanan versi x86 dan pilih "Run as administrator".

Di bagian atas, tempel Set-ExecutionPolicy RemoteSigned; jalankan skripnya. Pilih "Ya".

Ulangi langkah-langkah ini untuk versi 64-bit Powershell ISE juga (versi non x86).

Saya hanya mengklarifikasi langkah-langkah yang @Chad Miller mengisyaratkan. Terima kasih Chad!


33
2017-12-04 05:25



Juga menjalankan perintah ini sebelum skrip juga menyelesaikan masalah:

set-executionpolicy unrestricted

33
2018-03-27 06:11



Jika Anda berada di lingkungan di mana Anda bukan administrator, Anda dapat mengatur Kebijakan Eksekusi hanya untuk Anda, dan itu tidak akan memerlukan administrator.

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

atau

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "Unrestricted"

Anda dapat membaca semua tentang itu di entri bantuan.

Help Get-ExecutionPolicy -Full
Help Set-ExecutionPolicy -Full

26
2017-11-19 19:13



RemoteSigned: semua skrip yang Anda buat sendiri akan dijalankan, dan semua skrip yang diunduh dari Internet harus ditandatangani oleh penerbit tepercaya.

Oke, ubah kebijakan hanya dengan mengetik:

Set-ExecutionPolicy RemoteSigned

22
2017-07-20 12:37



saya menggunakan Windows 10 dan tidak dapat menjalankan perintah apa pun. Satu-satunya perintah yang memberi saya beberapa petunjuk adalah ini:

[x64]

  1. Buka C: \ Windows \ SysWOW64 \ cmd.exe [sebagai administrator]
  2. Jalankan perintah> PowerShell Set-ExecutionPolicy Tidak Terbatas

Tetapi ini tidak berhasil. Itu terbatas. Mungkin kebijakan keamanan baru untuk Windows10. Saya memiliki kesalahan ini:

Set-ExecutionPolicy: Windows PowerShell memperbarui kebijakan eksekusi Anda dengan sukses, tetapi pengaturannya ditimpa oleh kebijakan yang ditentukan pada cakupan yang lebih spesifik. Karena penggantian, shell Anda akan mempertahankan kebijakan eksekusi efektifnya saat ini ...

Jadi saya menemukan cara lain (larutan):

  1. Buka Jalankan Perintah / Konsol (Menang + R)
  2. Mengetik: gpedit.msc (Kebijakan Grup Editor)
  3. Jelajahi ke Kebijakan Komputer Lokal -> Konfigurasi Komputer -> Template Administratif -> Komponen Windows -> Windows Powershell.
  4. Aktifkan "Hidupkan Skrip Eksekusi"
  5. Atur kebijakan sesuai kebutuhan. Saya mengatur milik saya menjadi "Izinkan semua skrip".

Sekarang buka PowerShell dan nikmati;)


16
2017-09-01 09:32