Menjalankan skrip PowerShell dari Explorer dengan hak administrator

Skrip Windows PowerShell (ekstensi .PS1) tidak terkait dengan file yang dapat dieksekusi PowerShell.exe secara default. Mengklik dua kali pada file skrip PS1 membuka jendela editor tes notepad.exe. Anda dapat menjalankan file PS1 di PowerShell dari menu konteks Explorer dengan memilih Jalankan Dengan PowerShell. Namun, skrip tersebut dijalankan sebagai bagian dari sesi pengguna, tanpa hak administrator. Meskipun untuk file skrip yang sama .bat, .cmd, ada item menu terpisah Run As administrator. Dalam hal PowerShell, Anda harus membuka konsol Power Shell dengan hak tinggi dan menentukan path lengkap ke file skrip. Sangat tidak nyaman.

Pertimbangkan cara menambahkan File Explorer ke menu konteks untuk file dengan ekstensi * .ps1, item yang memungkinkan Anda untuk menjalankan skrip PowerShell dengan hak administrator.

  1. Jalankan Registry Editor (regedit.exe)
  2. Pergi ke cabang HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ shell
  3. Buat subkunci dengan nama runa dan pergi ke sana
  4. Di dalam bagian runas, buat Nilai String kosong bernama HasLUAShield (parameter ini akan menambahkan ikon UAC ke menu konteks explorer)
  5. Di bagian runas, buat subbagian bersarang perintah
  6. Sebagai nilai parameter Default bagian dari perintah, tentukan nilainya: powershell.exe "-Command" "if ((Get-ExecutionPolicy) -ne 'AllSigned') Set-ExecutionPolicy -Scope Process Bypass; & '% 1'"
  7. Sekarang, jika Anda mengklik RMB pada file * .PS1 apa saja, di menu konteks Anda dapat memilih Jalankan sebagai administrator

Kiat. Jika skrip berjalan cepat, pengguna hanya perlu melihat jendela PowerShell yang muncul dan dengan cepat menghilang. Dan bagaimana jika hasil skrip harus tetap di layar untuk dilihat oleh pengguna?

Untuk mencegah jendela konsol PowerShell menutup setelah skrip selesai, Anda perlu menambahkan parameter ke baris -Noexit:

powershell.exe -Tidak Keluar "-Command" "if ((Get-ExecutionPolicy) -ne 'AllSigned') Set-ExecutionPolicy -Scope Process Bypass; & '% 1'"