Mengapa saya PowerShell script tidak berjalan?

Saya menulis sebuah file batch sederhana sebagai PowerShell script, dan saya mendapatkan kesalahan ketika mereka jalankan.

It's di direktori scripts di jalan saya. Ini adalah kesalahan yang saya dapatkan:

Tidak dapat dimuat karena eksekusi script dinonaktifkan pada sistem ini. Silakan lihat "get-help tentang penandatanganan".

Aku melihat ke dalam, tapi's kurang bermanfaat.

Larutan

Ini bisa menjadi PowerShell's default tingkat keamanan, yang (IIRC) hanya akan berjalan ditandatangani script.

Coba ketik ini:

set-executionpolicy remotesigned

Yang akan memberitahu PowerShell untuk memungkinkan lokal (yaitu, pada drive lokal) unsigned script untuk menjalankan.

Kemudian mencoba mengeksekusi script anda lagi.

Komentar (6)

Anda perlu untuk menjalankan Set-ExecutionPolicy:


Set-ExecutionPolicy Restricted 
Komentar (2)

Gunakan:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

Selalu gunakan perintah di atas untuk memungkinkan untuk menjalankan PowerShell dalam sesi saat ini.

Komentar (1)

Aku mampu melewati kesalahan ini dengan menerapkan PowerShell seperti ini:

powershell -executionpolicy bypass -File .\MYSCRIPT.ps1

Artinya, saya menambahkan -executionpolicy bypass dengan cara saya dipanggil script.

Ini bekerja pada Windows 7 Service Pack 1. Saya baru PowerShell, sehingga tidak bisa menjadi peringatan untuk melakukan itu saya tidak menyadari.

[Edit 2017-06-26] saya melanjutkan untuk menggunakan teknik ini pada sistem lain termasuk Windows 10 dan Windows 2012 R2 tanpa masalah.

Berikut adalah apa yang saya gunakan sekarang. Ini membuat saya secara tidak sengaja menjalankan script dengan mengklik di atasnya. Ketika saya jalankan di scheduler saya tambahkan satu argumen: "scheduler" dan yang bypasses prompt.

Ini juga jeda jendela di akhir sehingga aku dapat melihat output dari PowerShell.

if NOT "%1" == "scheduler" (
   @echo looks like you started the script by clicking on it.
   @echo press space to continue or control C to exit.
   pause
)

C:
cd \Scripts

powershell -executionpolicy bypass -File .\rundps.ps1

set psexitcode=%errorlevel%

if NOT "%1" == "scheduler" (
   @echo Powershell finished.  Press space to exit.
   pause
)

exit /b %psexitcode%
Komentar (3)

Juga's worth mengetahui bahwa anda mungkin perlu untuk memasukkan .\ di depan nama script. Misalnya:

.\scriptname.ps1
Komentar (0)
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

Perintah di atas bekerja untuk saya bahkan ketika kesalahan berikut terjadi:

Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied.
Komentar (0)

Perintah set-executionpolicy unrestricted akan memungkinkan setiap script yang anda buat untuk menjalankan sebagai login pengguna. Hanya pastikan untuk mengatur executionpolicy pengaturan kembali untuk menandatangani menggunakan set-executionpolicy menandatangani perintah sebelum log out.

Komentar (1)

Di Windows 10: Klik ubah properti keamanan dari myfile.ps1 dan perubahan, "memungkinkan akses" dengan klik kanan / properties pada myfile.ps1

Komentar (0)