PowerShell mengatakan "eksekusi skrip dinonaktifkan pada sistem ini."

1764

Saya mencoba menjalankan a file yang memanggil a skrip 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-ExecutionPolicydariSaya Unrestrictedkembali.

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.ps1tidak 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?

Conor
sumber
3
Tidak terlihat, saya masuk sebagai Administrator dan juga menjalankan sebagai "Administrator" dan mendapatkan hasil yang sama seperti di atas ...
Conor
2
Sampai di dasarnya, kesalahannya menyesatkan, masalahnya ada di skrip PowerShell saya, terima kasih!
Conor
Nilainya menunjukkan bahwa Kebijakan Eksekusi membawa beberapa lingkup, dan menjalankan PowerShell dengan cara yang berbeda dapat membuat Anda mendapatkan kebijakan yang berbeda. Untuk melihat daftar kebijakan, jalankan Get-ExecutionPolicy -List.
Bacon Bits

Jawaban:

2243

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:

Set-ExecutionPolicy RemoteSigned

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

Setelah selesai, Anda dapat mengatur kebijakan kembali ke nilai default dengan:

Set-ExecutionPolicy Restricted
Chad Miller
sumber
141
Set-ExecutionPolicy Restrictedtampaknya menjadi cara untuk membatalkannya jika Anda ingin mengembalikan izin seperti sebelumnya: technet.microsoft.com/en-us/library/ee176961.aspx . Metode bypass sementara oleh @Jack Edmondsterlihat lebih aman bagi saya:powershell -ExecutionPolicy ByPass -File script.ps1
SharpC
33
Untuk kebijakan yang lebih aman, ruang lingkup untuk pengguna yang sebenarnya: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Nuno Aniceto
Set-ExecutionPolicy RemoteSigned tidak bisa menjadi baris pertama dalam skrip Anda. Jika ya, sorot dan jalankan hanya yang dipilih secara AWAL sebelum menjalankan sisa skrip Anda.
ozzy432836
Saya menemukan pertanyaan serupa di situs SF, "kebijakan eksekusi Powershell dalam SQL Server" tanya 10 Oktober '14. Jawabannya termasuk Get-ExecutionPolicy -Listyang membantu saya untuk melihat cakupan yang berbeda. Cmd Get-ExecutionPolicytidak menunjukkan semua cakupan. Import-Module SQLPSSekarang bekerja dengan kebijakan berubah sebagai berikut: {Undefined- Process,MachinePolicy,UserPolicy,}; {RemoteSigned- CurrentUser, LocalMachine}.
SherlockSpreadsheets
Jika saya melakukan ini, apakah perubahan hanya berlangsung selama durasi PowerShell saat ini? Atau lebih besar dari itu?
William Jockusch
709

Anda dapat melewati kebijakan ini untuk satu file dengan menambahkan -ExecutionPolicy Bypasssaat menjalankan PowerShell

powershell -ExecutionPolicy Bypass -File script.ps1
Jack Edmonds
sumber
3
Ini juga sangat berguna jika Anda menggunakan akun non-administrator. Saya membuat jalan pintas ke %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPasspada taskbar saya.
zek19
3
Perhatikan bahwa Microsoft Technet menjadikannya "Bypass", bukan "ByPass". Lihat: technet.microsoft.com/nl-nl/library/hh849812.aspx
Jelle Geerts
1
Ini tidak berfungsi untuk saya, saya mendapatkan izin yang sama ditolak seolah-olah saya memanggilnya dengan normal. Memanggil ps1 dari .bat dengan melakukan type script.ps1 | powershell -tidak bekerja sekalipun.
Some_Guy
8
Tujuan dari Kebijakan Eksekusi adalah untuk mencegah orang mengklik dua kali .ps1dan secara tidak sengaja menjalankan sesuatu yang tidak mereka maksudkan. Ini akan terjadi dengan .batfile
Kolob Canyon
Anda menghemat hari saya, terima kasih atas jawabannya.
Arpit Patel
163

Saya memiliki masalah serupa dan mencatat bahwa default cmdpada 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 perintahpowershell Set-ExecutionPolicy RemoteSigned

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

Anda dapat memeriksa mode menggunakan

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

Referensi:
MSDN - Kebijakan pelaksanaan Windows PowerShell
Penjelasan direktori Windows - 32bit vs 64bit

Ralph Willgoss
sumber
133

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

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.

KyleMit
sumber
8
Saya merasa penting untuk dicatat bahwa meskipun kebijakan eksekusi adalah tindakan keamanan, itu bukan kebijakan yang dimaksudkan untuk mencegah pengguna mengeksekusi kode PowerShell. Kebijakan eksekusi adalah sesuatu yang dimaksudkan untuk melindungi skrip Anda dan menentukan siapa yang menulis, memodifikasi atau menyetujuinya dan hanya itu. Itu sepele untuk menyiasati kebijakan eksekusi dengan sesuatu yang sederhana Get-Content .\MyFile.ps1 | powershell.exe -NoProfile -.
Bacon Bits
1
Mengingat keberadaannya -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 ...
Ajedi32
2
@ Ajedi32 Katakanlah saya memiliki tugas yang menjalankan skrip pada jaringan berbagi. Ketika saya memohon skrip saya, saya ingin proses saya memverifikasi bahwa skrip ditandatangani. Saya ingin kode saya diperiksa ulang bahwa skrip yang akan saya jalankan adalah kode yang saya percayai untuk dijalankan. Saya tidak peduli jika Anda dapat menjalankan kode saya. Menghentikan itu adalah pekerjaan hak akses. Saya hanya ingin mencegah Anda membuat saya menjalankan kode yang tidak saya tulis. Hak akses berarti sistem operasi mencegah Anda mengubah kode saya ketika Anda masuk. Penandatanganan kode dan kebijakan eksekusi berarti skrip saya belum dimodifikasi saat saya menjalankannya.
Bacon Bits
40

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!

Ryan
sumber
39

Juga menjalankan perintah ini sebelum skrip juga memecahkan masalah:

set-executionpolicy unrestricted
manik sikka
sumber
27
-1 - Ikuti prinsip izin paling tidak. Setidaknya atur kebijakan RemoteSignedsebelum 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 menetapkan unrestrictedsebagai pilihan terakhir, tetapi itu seharusnya tidak menjadi titik awal Anda.
KyleMit
3
Terima kasih telah menunjukkan opsi ini juga. Dengan segala hormat terhadap kebutuhan keamanan untuk keperluan produksi, di saat permintaan prototipe cepat sangat tinggi, semua kebijakan dan keamanan benar-benar menghalangi jalannya pekerjaan.
tishma
1
Mengenai komentar prototyping kembali, saya takut bahwa ini adalah mengapa kode jelek masuk ke produksi. Tentu saja ini hanya contoh sepele, tetapi jika Anda tidak bisa menyelesaikan sesuatu sepele ini selama pengembangan, itu adalah kekhawatiran untuk rilis. Juga, untuk kode yang dipesan lebih dahulu, dan jika Anda bisa, ketahui lingkungan target - kami menetapkan mayoritas sistem internal kami sebagai Remotesigned.
Trix
33

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
Micah 'Powershell Ninja'
sumber
Bekerja dengan baik untuk saya di Windows 8, bahkan ketika Set-ExecutionPolicy Unrestrictedsebagai admin sepertinya tidak "cukup" cukup untuk benar-benar membantu.
patridge
1
Saya percaya apa yang mungkin Anda alami adalah GPO atau sesuatu yang menimpa pengaturan Anda dari tingkat "LocalMachine" dari kebijakan ExecutionPolicy. Anda tidak dapat menimpa apa yang telah ada pada Kebijakan Domain dengan perintah Set-ExecutionPolicy. Namun, tetapi mengatur tingkat akses "CurrentUser", Anda dan hanya Anda yang akan memiliki Kebijakan Eksekusi yang ditentukan. Ini karena komputer melihat pada CurrentUser untuk kebijakan eksekusi sebelum melihat pada pengaturan LocalMachine.
Micah 'Powershell Ninja'
1
Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "Unrestricted" adalah satu-satunya solusi yang bekerja untuk saya. Terima kasih
Paulj
32

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:

Set-ExecutionPolicy RemoteSigned
Jaime
sumber
Seperti yang direkomendasikan dalam posting lain: adalah bijaksana untuk memasukkan "-Scope CurrentUser" untuk kebijakan yang lebih aman, ketika itu masuk akal.
clusterdude
32

Kita bisa mendapatkan status saat ini ExecutionPolicydengan perintah di bawah ini:

Get-ExecutionPolicy;

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 Bypassatau Unrestricteddengan menggunakan perintah PowerShell di bawah ini:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;

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 ExecutionPolicylebih santai daripada Unrestricted.

Pratik Patil
sumber
4
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.
Eon
1
Tanda titik koma di ujung perintah Anda berlebihan.
Bill_Stewart
23

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 berhasil memperbarui kebijakan eksekusi Anda, tetapi pengaturan tersebut ditimpa oleh kebijakan yang ditentukan pada cakupan yang lebih spesifik. Karena penggantian, shell Anda akan mempertahankan kebijakan eksekusi efektif saat ini dari ...

Jadi saya menemukan cara lain ( solusi ):

  1. Buka Jalankan Perintah / Konsol ( Win+ R)
  2. Ketik: gpedit.msc ( Editor Kebijakan Grup )
  3. Telusuri ke Kebijakan Komputer Lokal -> Konfigurasi Komputer -> Template Administratif -> Komponen Windows -> Windows Powershell .
  4. Aktifkan " Aktifkan Eksekusi Skrip "
  5. Tetapkan kebijakan sesuai kebutuhan. Saya menetapkan milik saya ke " Izinkan semua skrip ".

Sekarang buka PowerShell dan nikmati;)

hugocabral
sumber
Apakah ini instalasi yang berdiri sendiri, atau Anda terhubung ke workgroup atau domain?
MEMark
Mengapa buka cmd untuk melakukannya? Cukup buka ISE (sebagai admin) dan ketikSet-ExecutionPolicy RemoteSigned
Kolob Canyon
OMG ini akhirnya memperbaiki kotak win10 saya, @kolob set-executionpolicy tidak cukup
xer0x
Anda seharusnya tidak menggunakan Unrestricted. Ini adalah praktik yang lebih baik untuk digunakanRemoteSigned
Kolob Canyon
@ xer0x seharusnya selama Anda menjalankan PowerShell sebagai administrator
Kolob Canyon
10

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.

ScriptAholic
sumber
10

Win+ Rdan ketik perintah salin tempel dan tekan OK:

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

Dan jalankan skrip Anda.

Kemudian kembalikan perubahan seperti:

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "AllSigned"
Qamar
sumber
10

Anda juga dapat memotong ini dengan menggunakan perintah berikut:

PS > powershell Get-Content .\test.ps1 | Invoke-Expression

Anda juga dapat membaca artikel ini oleh Scott Sutherland yang menjelaskan 15 cara berbeda untuk mem-bypass PowerShell Set-ExecutionPolicyjika Anda tidak memiliki hak administrator:

15 Cara Untuk Memotong Kebijakan Eksekusi PowerShell

Alexander Sinno
sumber
Ini mungkin salah satu panduan yang lebih menarik untuk memecahkan masalah dan memahami batasan ini.
Osvaldo Mercado
5
  1. Buka PowerShell sebagai Administrator dan jalankan Set-ExecutionPolicy -Scope CurrentUser
  2. Berikan RemoteSigned dan tekan Enter
  3. Jalankan Set-ExecutionPolicy -Scope CurrentUser
  4. Berikan Tidak Terbatas dan tekan Enter
Ramanujam Allam
sumber
5

Anda dapat mencoba ini dan memilih Opsi "Semua"

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Taqi Raza Khan
sumber
3

Di editor ISE PowerShell saya menemukan menjalankan baris berikut pertama kali diizinkan skrip.

Set-ExecutionPolicy RemoteSigned -Scope Process
David Douglas
sumber
2

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 RemoteSigneddari konsol PowerShell dan katakan ya.

Adil Arif
sumber
2

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:

Invoke-Command -ComputerName $servername -ConfigurationName Microsoft.PowerShell32 -scriptblock {Set-ExecutionPolicy unrestricted}
rko281
sumber
2

Buka jalur registri HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShelldan set ExecutionPolicyke RemoteSigned.

surendran.k sunish
sumber
1
1. Buka PowerShell sebagai Administrator dan jalankan Set-ExecutionPolicy -Scope CurrentUser 2. Berikan RemoteSigned dan tekan Enter 3. Run Set-ExecutionPolicy -Scope CurrentUser 4. Berikan Tidak Terbatas dan tekan Enter
Ramanujam Allam
2

Saya mendapat peringatan lain ketika saya mencoba menjalankannya Set-ExecutionPolicy RemoteSigned

Saya memecahkan dengan perintah ini

Set-ExecutionPolicy "RemoteSigned" -Scope Process -Confirm:$false

Set-ExecutionPolicy "RemoteSigned" -Scope CurrentUser -Confirm:$false
George C.
sumber
1

Jika Anda di sini karena menjalankannya dengan Ruby atau Chef dan menggunakan eksekusi sistem ``, jalankan sebagai berikut:

`powershell.exe -ExecutionPolicy Unrestricted -command [Environment]::GetFolderPath(\'mydocuments\')`

Perintah itu untuk mendapatkan Folder "MyDocuments".

-ExecutionPolicy Unrestricted lakukan triknya.

Saya harap ini membantu orang lain.

JGutierrezC
sumber
Haruskah lampiran `` benar-benar ada di sana?
Peter Mortensen
1

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:

    runas.exe /savecred /user:administrator powershell -ExecutionPolicy ByPass -File script.ps1

dari kedua Jack Edmonds di atas, dan Peter Mortensen / Dhana dari postingan Bagaimana menjalankan aplikasi sebagai "run as administrator" dari command prompt?

Kirt Carson
sumber
1

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:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force -Scope Process
Sama sekali tidak
sumber
1

Buka konsol Powershell sebagai administrator, lalu tetapkan kebijakan eksekusi

Set-ExecutionPolicy -ExecutionPolicy Remotesigned 
lokeshbandharapu
sumber
0

Anda dapat menggunakan cara khusus untuk memotongnya:

Get-Content "PS1scriptfullpath.ps1" | Powershell-NoProfile -

Ini pipa konten skrip PowerShell ke PowerShell.exe dan menjalankannya memotong kebijakan eksekusi.

Wasif Hasan
sumber
0

Ini menyelesaikan masalah saya

Buka Windows PowerShellCommand dan jalankan query di bawah ini untuk mengubahExecutionPolicy

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

jika meminta konfirmasi perubahan tekan 'Y' dan tekan enter.

Arvind Chourasiya
sumber
0

Jalankan Set-ExecutionPolicy RemoteSignedperintah

maxxi
sumber
0
  1. Buka PowerShell sebagai administrasi
Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

gunakan perintah ini

MD SHAYON
sumber
-1

Buka cmd bukan PowerShell. Ini membantu saya ...

Jelmer Jellema
sumber
-2

Buka jendela PowerShell sebagai Administrator . Itu akan berhasil.

Suganthan Raj
sumber
Tidak berhasil. Namun, menjalankan powershell Set-ExecutionPolicy RemoteSigned berhasil.
Thronk