Saya mencoba menjalankan a cmd file yang memanggil a PowerShellskrip dari cmd.exe
, dan saya mendapatkan kesalahan di bawah ini:
Management_Install.ps1
tidak dapat dimuat karena eksekusi skrip dinonaktifkan pada sistem ini.
aku harus lari
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
dan ketika saya lari Get-ExecutionPolicy
dariPowerShellSaya Unrestricted
kembali.
PS C:\Users\Administrator\> Get-ExecutionPolicy
Unrestricted
C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> powershell .\Management_Install.ps1 1
WARNING: Running 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 lebih jelasnya.Pada baris: 1 char: 25
.\Management_Install.ps1
<<<< 1
CategoryInfo: NotSpecified: (:) [], PSSecurityException
FullyQualifiedErrorId: RuntimeException
C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> PAUSE
Press any key to continue . . .
Sistemnya adalah Windows Server 2008R2.
Apa yang saya lakukan salah?
Get-ExecutionPolicy -List
.Jawaban:
Jika Anda menggunakan Windows Server 2008 R2 maka ada versi PowerShell x64 dan x86 yang keduanya harus memiliki kebijakan eksekusi ditetapkan. Apakah Anda menetapkan kebijakan eksekusi pada kedua host?
Sebagai Administrator , Anda dapat menetapkan kebijakan eksekusi dengan mengetikkan ini di jendela PowerShell Anda:
Untuk informasi lebih lanjut, lihat Menggunakan Set-ExecutionPolicy Cmdlet .
Setelah selesai, Anda dapat mengatur kebijakan kembali ke nilai default dengan:
sumber
Set-ExecutionPolicy Restricted
tampaknya menjadi cara untuk membatalkannya jika Anda ingin mengembalikan izin seperti sebelumnya: technet.microsoft.com/en-us/library/ee176961.aspx . Metode bypass sementara oleh@Jack Edmonds
terlihat lebih aman bagi saya:powershell -ExecutionPolicy ByPass -File script.ps1
Get-ExecutionPolicy -List
yang membantu saya untuk melihat cakupan yang berbeda. CmdGet-ExecutionPolicy
tidak menunjukkan semua cakupan.Import-Module SQLPS
Sekarang bekerja dengan kebijakan berubah sebagai berikut:{Undefined- Process,MachinePolicy,UserPolicy,}; {RemoteSigned- CurrentUser, LocalMachine}
.Anda dapat melewati kebijakan ini untuk satu file dengan menambahkan
-ExecutionPolicy Bypass
saat menjalankan PowerShellsumber
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass
pada taskbar saya.type script.ps1 | powershell -
tidak bekerja sekalipun..ps1
dan secara tidak sengaja menjalankan sesuatu yang tidak mereka maksudkan. Ini akan terjadi dengan.bat
fileSaya memiliki masalah serupa dan mencatat bahwa default
cmd
pada Windows Server 2012 , menjalankan x64.Untuk Windows 7 , Windows 8 , Windows 10 , Windows Server 2008 R2 atau Windows Server 2012 , jalankan perintah berikut sebagai Administrator :
x86 (32 bit)
Buka
C:\Windows\SysWOW64\cmd.exe
Jalankan perintah
powershell Set-ExecutionPolicy RemoteSigned
x64 (64 bit)
Buka
C:\Windows\system32\cmd.exe
Jalankan perintah
powershell Set-ExecutionPolicy RemoteSigned
Anda dapat memeriksa mode menggunakan
echo %PROCESSOR_ARCHITECTURE%
[Environment]::Is64BitProcess
Referensi:
MSDN - Kebijakan pelaksanaan Windows PowerShell
Penjelasan direktori Windows - 32bit vs 64bit
sumber
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 :
Manfaat yang, sebagaimana disebutkan oleh Dasar-Dasar PowerShell - Kebijakan Eksekusi dan Penandatanganan Kode , adalah:
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:
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:
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:
Anda dapat menemukan lokasi yang tepat dengan menjalankan variabel PowerShell
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.
sumber
Get-Content .\MyFile.ps1 | powershell.exe -NoProfile -
.-ExecutionPolicy ByPass
, apa tujuan kebijakan ini? Apakah hanya untuk mencegah pengguna secara tidak sengaja membuka konsol PowerShell dan menjalankan skrip berbahaya? Tidak bisakah penyerang hanya menggunakan skrip yang dapat dieksekusi atau batch jika mereka ingin menyiasati ini? Bahkan setelah membaca komentar @BaconBits, saya tidak yakin skenario apa yang dimaksudkan untuk mencegah kebijakan ini ...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 skrip. Pilih "Ya".Ulangi langkah-langkah ini untuk versi Powershell ISE versi 64-bit juga (versi non x86).
Saya hanya mengklarifikasi langkah-langkah yang diindikasikan @Chad Miller. Chad terima kasih!
sumber
Juga menjalankan perintah ini sebelum skrip juga memecahkan masalah:
sumber
RemoteSigned
sebelum menghapus semua batasan pada kebijakan keamanan Anda. Jika itu tidak berhasil, maka kaji kembali apa poin rasa sakit Anda dan mengapa itu tidak berhasil. Anda dapat menetapkanunrestricted
sebagai pilihan terakhir, tetapi itu seharusnya tidak menjadi titik awal Anda.Remotesigned
.Jika Anda berada di lingkungan di mana Anda bukan administrator, Anda dapat mengatur Kebijakan Eksekusi hanya untuk Anda, dan itu tidak akan memerlukan administrator.
atau
Anda dapat membaca semua tentang itu di entri bantuan.
sumber
Set-ExecutionPolicy Unrestricted
sebagai admin sepertinya tidak "cukup" cukup untuk benar-benar membantu.RemoteSigned: semua skrip yang Anda buat sendiri akan dijalankan, dan semua skrip yang diunduh dari Internet harus ditandatangani oleh penerbit tepercaya.
Oke, ubah kebijakan dengan hanya mengetik:
sumber
Kita bisa mendapatkan status saat ini
ExecutionPolicy
dengan perintah di bawah ini:Secara default itu Dibatasi . Untuk memungkinkan eksekusi skrip PowerShell kita perlu mengatur ExecutionPolicy ini sebagai Bypass atau Unrestricted .
Kami dapat menetapkan kebijakan untuk Pengguna Saat Ini sebagai
Bypass
atauUnrestricted
dengan menggunakan perintah PowerShell di bawah ini:Kebijakan tidak terbatas memuat semua file konfigurasi dan menjalankan semua skrip. Jika Anda menjalankan skrip yang tidak ditandatangani yang diunduh dari Internet, Anda akan dimintai izin sebelum dijalankan.
Sedangkan dalam kebijakan Bypass , tidak ada yang diblokir dan tidak ada peringatan atau konfirmasi selama eksekusi skrip. Bypass
ExecutionPolicy
lebih santai daripadaUnrestricted
.sumber
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;
AKA cara cepat dan kotor untuk memberitahu VS2015 untuk berhenti mengeluh dan menjalankan skrip berdarah saya. Terima kasih. penyelamat.Saya menggunakan Windows 10 dan tidak dapat menjalankan perintah apa pun. Satu-satunya perintah yang memberi saya beberapa petunjuk adalah ini:
[x64]
Tetapi ini tidak berhasil. Itu terbatas. Mungkin kebijakan keamanan baru untuk Windows10. Saya memiliki kesalahan ini:
Jadi saya menemukan cara lain ( solusi ):
Sekarang buka PowerShell dan nikmati;)
sumber
Set-ExecutionPolicy RemoteSigned
Unrestricted
. Ini adalah praktik yang lebih baik untuk digunakanRemoteSigned
Menetapkan kebijakan eksekusi khusus untuk lingkungan. Jika Anda mencoba menjalankan skrip dari ISE x86 yang berjalan, Anda harus menggunakan PowerShell x86 untuk menetapkan kebijakan eksekusi. Demikian juga, jika Anda menjalankan ISE 64-bit, Anda harus mengatur kebijakan dengan PowerShell 64-bit.
sumber
Win+ Rdan ketik perintah salin tempel dan tekan OK:
Dan jalankan skrip Anda.
Kemudian kembalikan perubahan seperti:
sumber
Anda juga dapat memotong ini dengan menggunakan perintah berikut:
Anda juga dapat membaca artikel ini oleh Scott Sutherland yang menjelaskan 15 cara berbeda untuk mem-bypass PowerShell
Set-ExecutionPolicy
jika Anda tidak memiliki hak administrator:15 Cara Untuk Memotong Kebijakan Eksekusi PowerShell
sumber
sumber
Anda dapat mencoba ini dan memilih Opsi "Semua"
sumber
Di editor ISE PowerShell saya menemukan menjalankan baris berikut pertama kali diizinkan skrip.
sumber
Di PowerShell 2.0, kebijakan eksekusi diatur ke dinonaktifkan secara default.
Sejak saat itu, tim PowerShell telah membuat banyak perbaikan, dan mereka yakin bahwa pengguna tidak akan banyak merusak saat menjalankan skrip. Jadi sejak PowerShell 4.0 dan seterusnya, ini diaktifkan secara default.
Dalam kasus Anda, ketik
Set-ExecutionPolicy RemoteSigned
dari konsol PowerShell dan katakan ya.sumber
Saya memiliki masalah yang sama hari ini. Kebijakan eksekusi 64-bit tidak dibatasi, sementara 32-bit dibatasi.
Berikut cara mengubah kebijakan 32-bit dari jarak jauh:
sumber
Buka jalur registri
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
dan setExecutionPolicy
keRemoteSigned
.sumber
Saya mendapat peringatan lain ketika saya mencoba menjalankannya
Set-ExecutionPolicy RemoteSigned
Saya memecahkan dengan perintah ini
sumber
Jika Anda di sini karena menjalankannya dengan Ruby atau Chef dan menggunakan eksekusi sistem ``, jalankan sebagai berikut:
Perintah itu untuk mendapatkan Folder "MyDocuments".
-ExecutionPolicy Unrestricted
lakukan triknya.Saya harap ini membantu orang lain.
sumber
Beberapa jawaban menunjuk pada kebijakan eksekusi. Namun beberapa hal memerlukan "runas administrator" juga. Ini paling aman karena tidak ada perubahan permanen pada kebijakan eksekusi, dan dapat melewati pembatasan administrator. Gunakan dengan schedtask untuk memulai batch dengan:
dari kedua Jack Edmonds di atas, dan Peter Mortensen / Dhana dari postingan Bagaimana menjalankan aplikasi sebagai "run as administrator" dari command prompt?
sumber
Saya menemukan baris ini bekerja paling baik untuk salah satu server Windows Server 2008 R2 saya. Beberapa orang lain tidak memiliki masalah tanpa baris ini di skrip PowerShell saya:
sumber
Buka konsol Powershell sebagai administrator, lalu tetapkan kebijakan eksekusi
sumber
Anda dapat menggunakan cara khusus untuk memotongnya:
Ini pipa konten skrip PowerShell ke PowerShell.exe dan menjalankannya memotong kebijakan eksekusi.
sumber
Ini menyelesaikan masalah saya
Buka Windows
PowerShell
Command dan jalankan query di bawah ini untuk mengubahExecutionPolicy
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
jika meminta konfirmasi perubahan tekan 'Y' dan tekan enter.
sumber
Jalankan
Set-ExecutionPolicy RemoteSigned
perintahsumber
gunakan perintah ini
sumber
Buka cmd bukan PowerShell. Ini membantu saya ...
sumber
Buka jendela PowerShell sebagai Administrator . Itu akan berhasil.
sumber