Apakah ada cara untuk membuat skrip PowerShell berfungsi dengan mengklik ganda file .ps1?

150

Saya mendistribusikan skrip PowerShell ke tim saya. Skripnya adalah untuk mengambil alamat IP dari klien Vsphere, membuat koneksi mstsc, dan memasukkannya ke dalam file bersama.

Saat mereka menggunakan skrip, mereka mengetahui alamat IP mesin. Setelah itu, mereka selalu cenderung menggunakan mstsc secara langsung daripada menjalankan skrip PowerShell. (Karena mereka menggunakan mstsc, saya tidak dapat mengetahui apakah mereka sering menggunakan VM atau tidak.)

Terutama mereka memberi tahu saya bahwa menjalankan PowerShell tidak langsung.

Saya muak dengan kemalasan mereka.

Apakah ada cara untuk membuat skrip PowerShell berfungsi dengan mengklik ganda file .ps1?

Samselvaprabu
sumber
3
Bagaimana jika menggunakan log di server? "Jangan percayai pengguna" mungkin berarti Anda tidak dapat mempercayai dia dengan data Anda, tetapi lebih sering itu berarti jangan mempercayai dia untuk tidak malas.
Lihat juga howtogeek.com/204166/…
Michael Freidgeim
Mengompilasi skrip PS dengan menggunakan Powershell studio sapien.com/software/powershell_studio
Root Loop
Saya lebih suka menjalankannya melalui vscode (sehingga saya dapat melihat konsol, dan men
debugnya
1
Saya juga muak dengan kemalasan pengguna, ditambah satu ..
Timo

Jawaban:

134

Buat pintasan dengan sesuatu seperti ini sebagai "Target":

powershell.exe -command "& 'C:\A path with spaces\MyScript.ps1' -MyArguments blah"
David Brabant
sumber
3
Seperti yang disarankan Jeffery Hicks (Dia adalah sumber daya berwibawa di PowerShell) bahwa tidak disarankan untuk mengubah pengaturan, saya akan memilih jawaban Anda adalah jawaban terbaik dan jawaban JPBlanc sebagai jawaban yang berguna.
Samselvaprabu
6
gunakan ini dengan: `-noLogo -ExecutionPolicy unrestricted -file <path>` seperti yang dijawab oleh: @ user3071883
Ujjwal Singh
1
@UjjwalSingh: -NoProfilejuga berguna, karena profil dapat melakukan semua hal yang tidak diharapkan skrip.
Joey
6
Untuk pembaca selanjutnya: Ada peretasan registri dalam jawaban di bawah ini yang menyelesaikan apa yang diminta OP. Jawaban yang diterima tidak.
Wouter
2
Apakah ada cara untuk melakukan ini tetapi menggunakan relatif / jalur saat ini?
Mythofechelon
80

Atau jika Anda ingin semua file PS1 berfungsi seperti file VBS, Anda dapat mengedit registri seperti ini:

HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\open\command

Edit nilai Default menjadi seperti ini ...

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -noLogo -ExecutionPolicy unrestricted -file "%1"

Kemudian Anda cukup mengklik dua kali semua file .PS1 Anda seperti yang Anda inginkan. menurut pendapat saya, bisa keluar dari kotak.

Saya akan menyebutnya "The Powershell De-castration Hack". LOL nikmati!

pengguna3071883
sumber
30
Ini adalah satu-satunya yang berhasil bagi saya dalam daftar jawaban ini. Saya tidak siap untuk menerima jawaban "Tidak disarankan" - Saya memberi tahu PC apa yang harus dilakukan, PC tidak memberi tahu saya.
Matt
7
Ini sebenarnya adalah jalan pintas ganda. Menghapus batasan terhadap double-click-to-run, dan mengatasi ExecutionPolicy PowerShell yang dimaksudkan untuk mencegah berjalannya skrip yang tidak tepercaya bahkan dari konsol.
Iszi
4
Ini adalah cara yang salah untuk melakukannya. Anda mengubah fungsi perintah "Buka" alih-alih menyetel "Jalankan dengan PowerShell" sebagai default. Lihat jawaban itgala.xyz di bawah ini.
Indy411
4
Jika Anda memang ingin menggunakan metode ini, nilai default yang benar untuk kunci registri sebenarnya adalah "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -File "%1"%*tempat Anda dapat menyertakan file -ExecutionPolicy unrestricted. Perhatikan perubahan di akhir perintah yang memungkinkan nol atau lebih parameter untuk diteruskan ke skrip PowerShell. Tanda kutip dan spasi di sekitar tanda persen harus persis seperti yang ditunjukkan.
Glenn Slayden
3
Untuk solusi baris perintah daripada mengedit registri, Anda dapat mengetik ftype Microsoft.PowerShellScript.1=^"^%SystemRoot^%\System32\WindowsPowerShell\v1.0\powershell.exe^" -NoLogo -ExecutionPolicy Unrestricted -File ^"%1^" %*yang akan melakukan hal yang sama.
Damian T.
20

Ini berfungsi untuk saya di Windows 10 dan PowerShell 5.1:

  • klik kanan pada file .ps1
  • Buka dengan...
  • Pilih aplikasi lain
  • Salin lokasi powershell.exe ke bilah alamat (secara default tidak akan menampilkan folder windows) yaitu C: \ Windows \ System32 \ WindowsPowerShell \ v1.0
  • pilih powershell.exe
  • pilih "Selalu gunakan aplikasi ini untuk membuka file .ps1"
  • klik OK
vizmi
sumber
2
Mungkin Anda perlu mengatur kebijakan eksekusi pada mesin host ke sesuatu yang masuk akal yaitu RemoteSigned
vizmi
4
Ini berumur beberapa tahun dan tidak ada yang memikirkan hal ini sampai setengah tahun yang lalu? - Saya melakukan ini juga dan berfungsi dengan sempurna, meskipun Anda harus melakukan beberapa konfigurasi lagi atau PowerShell akan menolak untuk menjalankan skrip .ps1 sama sekali (lihat Set-ExecutionPolicy).
DarkWiiPlayer
Sepertinya nama skrip tidak perlu mengandung spasi jika Anda ingin ini berfungsi. Selain itu, tampaknya berfungsi dengan sempurna.
Lukas
3
Bagaimana ini bukan jawaban dengan suara terbanyak? Mengapa kami mengedit registri secara langsung atau menggunakan file batch jika Anda dapat melakukannya dengan cara yang diinginkan Windows, melalui asosiasi file?
Dr. Kickass
@ Dr. Kickass Ini mungkin salah satu jawaban baru yang saya kira
vizmi
19

Ketahuilah bahwa salah satu fitur keamanan PowerShell adalah pengguna TIDAK dapat meluncurkan skrip dengan klik dua kali. Berhati-hatilah jika Anda mengubah pengaturan ini. Alternatifnya mungkin dengan mengemas skrip Anda. Beberapa editor seperti PrimalScript dapat melakukannya. Pengguna masih perlu menginstal PowerShell tetapi kemudian mereka dapat mengklik dua kali exe tersebut. Dan sepertinya tim Anda membutuhkan sedikit pendidikan.

Jeffery Hicks
sumber
3
Ini adalah fitur keamanan karena menunda peretas setidaknya beberapa menit sampai mereka menemukan alternatif!
MarcH
32
Ini adalah fitur keamanan yang bodoh dan tidak berguna. Bisakah Anda menjalankan batch dengan ckicling ganda di atasnya? Ya, exe? Iya. VBScript? Iya. Saya gagal untuk menyadari mengapa skrip poweshell akan dianggap lebih berbahaya daripada yang lain
Mauro F.
12
Saya tidak tahu tentang kalian, tapi saya pasti pernah menjalankan file bat di komputer yang salah sebelumnya dengan klik dua kali yang tidak disengaja. Dengan sesuatu yang dimaksudkan untuk mengotomatiskan administrasi, masuk akal untuk membatasinya.
lordcheeto
1
Anda dapat mengklik dua kali file EXE jadi saya tidak melihat bagaimana ini membantu. Tapi tentunya tim Powershell menyadari argumen dasar ini. Pasti ada lebih dari itu.
usr
2
Jika Anda menulis skrip yang "berbahaya" untuk dieksekusi, dan Anda tidak menambahkan proses konfirmasi dasar ... Saya rasa Anda suka hidup berbahaya.
Romain Vincent
17

Saya menulis ini beberapa tahun yang lalu (menjalankannya dengan hak administrator):

<#
.SYNOPSIS
    Change the registry key in order that double-clicking on a file with .PS1 extension
    start its execution with PowerShell.
.DESCRIPTION
    This operation bring (partly) .PS1 files to the level of .VBS as far as execution
    through Explorer.exe is concern.
    This operation is not advised by Microsoft.
.NOTES
    File Name   : ModifyExplorer.ps1
    Author      : J.P. Blanc - [email protected]
    Prerequisite: PowerShell V2 on Vista and later versions.
    Copyright 2010 - Jean Paul Blanc/Silogix
.LINK
    Script posted on:
    http://www.silogix.fr
.EXAMPLE
    PS C:\silogix> Set-PowAsDefault -On
    Call Powershell for .PS1 files.
    Done!
.EXAMPLE
    PS C:\silogix> Set-PowAsDefault
    Tries to go back
    Done!
#>
function Set-PowAsDefault
{
  [CmdletBinding()]
  Param
  (
    [Parameter(mandatory=$false, ValueFromPipeline=$false)]
    [Alias("Active")]
    [switch]
    [bool]$On
  )

  begin
  {
    if ($On.IsPresent)
    {
      Write-Host "Call PowerShell for .PS1 files."
    }
    else
    {
      Write-Host "Try to go back."
    }
  }

  Process
  {
    # Text Menu
    [string]$TexteMenu = "Go inside PowerShell"

    # Text of the program to create
    [string] $TexteCommande = "%systemroot%\system32\WindowsPowerShell\v1.0\powershell.exe -Command ""&'%1'"""

    # Key to create
    [String] $clefAModifier = "HKLM:\SOFTWARE\Classes\Microsoft.PowerShellScript.1\Shell\Open\Command"

    try
    {
      $oldCmdKey = $null
      $oldCmdKey = Get-Item $clefAModifier -ErrorAction SilentlyContinue
      $oldCmdValue = $oldCmdKey.getvalue("")

      if ($oldCmdValue -ne $null)
      {
        if ($On.IsPresent)
        {
          $slxOldValue = $null
          $slxOldValue = Get-ItemProperty $clefAModifier -Name "slxOldValue" -ErrorAction SilentlyContinue
          if ($slxOldValue -eq $null)
          {
            New-ItemProperty $clefAModifier -Name "slxOldValue" -Value $oldCmdValue  -PropertyType "String" | Out-Null
            New-ItemProperty $clefAModifier -Name "(default)" -Value $TexteCommande  -PropertyType "ExpandString" | Out-Null
            Write-Host "Done !"
          }
          else
          {
            Write-Host "Already done!"
          }
        }
        else
        {
          $slxOldValue = $null
          $slxOldValue = Get-ItemProperty $clefAModifier -Name "slxOldValue" -ErrorAction SilentlyContinue
          if ($slxOldValue -ne $null)
          {
            New-ItemProperty $clefAModifier -Name "(default)" -Value $slxOldValue."slxOldValue"  -PropertyType "String" | Out-Null
            Remove-ItemProperty $clefAModifier -Name "slxOldValue"
            Write-Host "Done!"
          }
          else
          {
            Write-Host "No former value!"
          }
        }
      }
    }
    catch
    {
      $_.exception.message
    }
  }
  end {}
}
JPBlanc
sumber
2
Saya harus mengubahnya di lokasi ini agar berfungsi: Komputer \ HKEY_CLASSES_ROOT \ Applications \ powershell.exe \ Shell \ Open \ Command. Saya tidak cukup memahami registri untuk menjelaskan mengapa ini terjadi. Mungkin karena saya menjalankan Powershell 3.0? Pokoknya, terima kasih untuk naskahnya.
Wouter
15

Anda harus mengubah registri. Pertama, konfigurasikan PSDrive untuk HKEY_CLASSES_ROOT karena ini tidak diatur secara default. Perintah untuk ini adalah:

New-PSDrive HKCR Registry HKEY_CLASSES_ROOT

Sekarang Anda dapat menavigasi dan mengedit kunci dan nilai registri di HKEY_CLASSES_ROOT seperti yang Anda lakukan di PSDrives HKCU dan HKLM biasa.

Untuk mengkonfigurasi klik dua kali untuk meluncurkan skrip PowerShell secara langsung:

Set-ItemProperty HKCR:\Microsoft.PowerShellScript.1\Shell '(Default)' 0

Untuk mengonfigurasi klik ganda untuk membuka skrip PowerShell di PowerShell ISE:

Set-ItemProperty HKCR:\Microsoft.PowerShellScript.1\Shell '(Default)' 'Edit'

Untuk memulihkan nilai default (setel klik dua kali untuk membuka skrip PowerShell di Notepad):

Set-ItemProperty HKCR:\Microsoft.PowerShellScript.1\Shell '(Default)' 'Open'
Alex Langer
sumber
Saya mencoba memulihkan nilai default menggunakan baris terakhir dari Elevated PowerShell ISE, tetapi tampaknya jika Anda telah menggunakan perintah seperti yang dijelaskan Thermionix itu menggantikan Default, jadi Anda harus mengatur ulang Shell.command secara eksplisit (tetapi saya belum menemukan benar sintaks untuk itu jadi saya harus melalui Control Panel> Program> File Associations).
dragon788
13

Saya setuju bahwa menyetel pengaturan sistem mungkin sedikit berlebihan, tetapi pintasan yang memerlukan jalur hardcode tidak ideal. File bat sebenarnya memecahkan masalah dengan baik

RunMyPowershellScript.bat

 start powershell -command "& '.\MyPowershellScript.ps1' -MyArguments blah"

File batch ini sekarang dapat diklik dua kali, pintasan dapat dengan mudah dibuat ke file batch, dan skrip dapat diterapkan ke folder mana pun.

Rick
sumber
Perhatikan bahwa Anda membutuhkan skrip ps1 di folder yang sama dengan file bat. Anda mendapatkan kemampuan salin tempel dengan biaya mempertahankan 2 file.
jiggunjer
@rick, Tidak berhasil untuk saya, tidak ada yang terjadi kecuali jendela hitam yang muncul selama beberapa milidetik:start powershell -command "& 'C:\Users\skripte\arbeitstage.ps1'"
Timo
@Timo Coba jalankan perintah Anda di jendela prompt perintah biasa sehingga Anda dapat melihat output apa sebelum jendela menghilang.
Rick
11

Perintah PowerShell sederhana untuk mengatur ini di registri;

New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
Set-ItemProperty -Path "HKCR:\Microsoft.PowerShellScript.1\Shell\open\command" -name '(Default)' -Value '"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -noLogo -ExecutionPolicy unrestricted -file "%1"'
Thermionix
sumber
6
Untuk sedikit lebih aman, saya sarankan menggunakan ExecutionPolicy RemoteSignedagar skrip acak yang diunduh dari jaringan / internet (dengan metadata yang menunjukkan bahwa itu tidak dibuat secara lokal) tidak akan dijalankan dari klik dua kali, tetapi file apa pun yang telah Anda buat dengan menyalin dan menempelkan kode ke dalam file .ps1 akan dijalankan karena tidak ada metadata yang terkait dengannya.
dragon788
7
  1. Arahkan REGEDIT ke HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ Microsoft.PowerShellScript.1 \ Shell
  2. Di panel kanan, klik dua kali "(Default)"
  3. Hapus nilai yang ada dari "Open" (yang meluncurkan Notepad) dan ketik "0" (menjadi nol, yang meluncurkan Powershell secara langsung).

Kembalikan nilainya jika Anda ingin menggunakan Notepad sebagai default lagi.

gth
sumber
5

Anda dapat mengatur asosiasi file default dari ps1file yang akan powershell.exeyang akan memungkinkan Anda untuk menjalankan script PowerShell dengan mengklik ganda di atasnya.

Di Windows 10,

  1. Klik kanan pada ps1file
  2. Klik Open with
  3. Klik Choose another app
  4. Di jendela popup, pilih More apps
  5. Gulir ke bawah dan pilih Look for another app on this PC.
  6. Jelajahi dan pilih C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe.
  7. Daftar barang

Itu akan mengubah asosiasi file dan ps1 file file akan dieksekusi dengan mengklik dua kali. Anda dapat mengubahnya kembali ke perilaku default dengan menyetel notepad.exeke aplikasi default.

Sumber

elBradford
sumber
1
Ini berfungsi dengan baik tetapi cukup banyak duplikat jawaban dari vizmi.
Marteng
4

letakkan file .cmd sederhana di subfolder saya dengan file .ps1 saya dengan nama yang sama, jadi, misalnya, skrip bernama "foobar" akan memiliki "foobar.ps1" dan "foobar.cmd". Jadi untuk menjalankan .ps1, yang harus saya lakukan adalah mengklik file .cmd dari explorer atau menjalankan .cmd dari command prompt. Saya menggunakan nama dasar yang sama karena file .cmd secara otomatis akan mencari .ps1 menggunakan namanya sendiri.

::====================================================================
:: Powershell script launcher
::=====================================================================
:MAIN
    @echo off
    for /f "tokens=*" %%p in ("%~p0") do set SCRIPT_PATH=%%p
    pushd "%SCRIPT_PATH%"

    powershell.exe -sta -c "& {.\%~n0.ps1 %*}"

    popd
    set SCRIPT_PATH=
    pause

Pushd / popd memungkinkan Anda meluncurkan file .cmd dari command prompt tanpa harus berpindah ke direktori tertentu tempat skrip berada. Ini akan berubah ke direktori script kemudian setelah selesai kembali ke direktori asli.

Anda juga dapat menonaktifkan jeda jika ingin jendela perintah menghilang saat skrip selesai.

Jika skrip .ps1 saya memiliki parameter, saya meminta mereka dengan petunjuk GUI menggunakan .NET Forms, tetapi juga membuat skrip cukup fleksibel untuk menerima parameter jika saya ingin meneruskannya. Dengan cara ini saya hanya dapat mengklik dua kali dari Explorer dan tidak perlu mengetahui detail parameter karena akan menanyakan apa yang saya butuhkan, dengan kotak daftar atau formulir lainnya.

KoZm0kNoT
sumber
2
Terima kasih untuk file batch. Sekadar info, Anda dapat mengganti pernyataan "for" dengan hanya: "set SCRIPT_PATH =% ~ p0" (tanpa tanda kutip). Sebenarnya, saya akan menggunakan ~ dp0 daripada ~ p0 sehingga akan bekerja di seluruh drive. Saya akan menggunakan ini sendiri.
zumalifeguard
3

Jika Anda terbiasa dengan administrasi Windows tingkat lanjut, maka Anda dapat menggunakan paket ADM ini (petunjuk disertakan di halaman itu) dan mengizinkan menjalankan skrip PowerShell setelah mengklik dua kali melalui template ini dan Local GPO. Setelah ini, Anda cukup mengubah program default yang terkait dengan jenis file .ps1 menjadi powershell.exe(gunakan pencarian, ini cukup disimpan) dan Anda siap untuk menjalankan skrip PowerShell dengan klik dua kali.

Jika tidak, saya akan merekomendasikan untuk tetap menggunakan saran lain karena Anda dapat mengacaukan seluruh sistem dengan alat administrasi ini.

Saya pikir pengaturan default terlalu ketat. Jika seseorang berhasil meletakkan beberapa kode berbahaya di komputer Anda maka dia juga dapat melewati batasan ini (membungkusnya ke dalam file .cmd atau .exe, atau trik dengan pintasan) dan semua yang pada akhirnya diselesaikannya hanya untuk mencegah Anda dari cara mudah menjalankan skrip yang Anda tulis.

Jirrick
sumber
Setelah terinstal, Anda dapat menemukan pengaturan ini di "Editor Kebijakan Grup Lokal" di bawah: Kebijakan Komputer Lokal -> Konfigurasi Komputer -> Template Administratif -> Komponen Windows. Di sana, Anda dapat mengaktifkannya, dan pastikan untuk memilih kebijakan di daftar drop-down yang kemudian diaktifkan.
Wouter
2

Ini didasarkan pada jawaban KoZm0kNoT. Saya memodifikasinya untuk bekerja lintas drive.

@echo off
pushd "%~d0"
pushd "%~dp0"
powershell.exe -sta -c "& {.\%~n0.ps1 %*}"
popd
popd

Dua pushd / popds diperlukan jika cwd pengguna berada di drive yang berbeda. Tanpa set luar, cwd pada drive dengan skrip akan hilang.

zumalifeguard
sumber
2

Inilah yang saya gunakan agar skrip dijalankan sebagai admin secara default:

Powershell.exe -Command "& {Start-Process PowerShell.exe -Verb RunAs -ArgumentList '-File """%1"""'}"

Anda harus menempelkannya ke regedit sebagai nilai default untuk:

HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\Open\Command

Atau inilah skrip yang akan melakukannya untuk Anda:

$hive = [Microsoft.Win32.RegistryKey]::OpenBaseKey('ClassesRoot', 'Default')
$key = $hive.CreateSubKey('Microsoft.PowerShellScript.1\Shell\Open\Command')
$key.SetValue($null, 'Powershell.exe -Command "& {Start-Process PowerShell.exe -Verb RunAs -ArgumentList ''-File """%1"""''}"')
Mika
sumber
2

Saya mencoba jawaban teratas untuk pertanyaan ini, tetapi menemukan pesan kesalahan. Kemudian saya menemukan jawabannya di sini:

PowerShell mengatakan "eksekusi skrip dinonaktifkan di sistem ini."

Apa yang berhasil bagi saya adalah menggunakan solusi ini:

powershell -ExecutionPolicy Bypass -File script.ps1

Anda dapat menempelkannya ke file .bat dan klik dua kali di atasnya.

Francis
sumber
Ini bekerja untuk saya dan saya pikir ini lebih baik daripada metode jalan pintas.
Ben
1

Anda dapat menggunakan fungsionalitas 'SendTo' Windows untuk membuat skrip PS1 berjalan lebih mudah. Dengan menggunakan metode ini, Anda dapat mengklik kanan pada skrip PS1 dan menjalankannya. Ini tidak benar-benar menjawab pertanyaan OP tetapi hampir. Semoga bermanfaat bagi sesama. BTW .. ini berguna untuk berbagai tugas lainnya.

  • Temukan / Cari Powershell.exe
  • Klik kanan pada Powershell.exe dan pilih Buka Lokasi File
  • Klik kanan pada Powershell.exe dan pilih Buat Pintasan. Simpan sementara beberapa tempat seperti desktop Anda
  • Anda mungkin ingin membuka sebagai Admin secara default. Pilih Pintasan> Properti> Lanjutan> Buka Sebagai Admin
  • Buka folder Sendto. Mulai> Jalankan> Shell: Sendto
  • Pindahkan pintasan Powershell.exe ke folder Sendto
  • Sekarang Anda dapat mengklik kanan pada skrip PS1.
  • Klik kanan pada file PS1, Pilih opsi konteks SendTo> Pilih pintasan Powershell
  • Skrip PS1 Anda harus dijalankan.
MrRobot
sumber
1
Bagaimana ini lebih baik daripada opsi menu konteks 'Jalankan dengan Powershell' default?
elBradford
1

Saya menggunakan ini (hanya perlu menjalankannya sekali); juga pastikan Anda memiliki hak untuk mengeksekusi:

dari PowerShell dengan hak yang lebih tinggi:

Set-ExecutionPolicy=RemoteSigned

lalu dari file bat:

-----------------------------------------

 ftype Microsoft.PowerShellScript.1="C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -noexit ^&'%%1'

 assoc .ps1=Microsoft.PowerShellScript.1

-----------------------------------------
auto exit: remove -noexit 

dan voila; mengklik dua kali * .ps1 akan menjalankannya.

Paul Fijma
sumber
The term '%1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
ajeh
Hanya kombinasi jawaban yang diterima dengan jawaban ini yang berfungsi untuk saya, setelah saya menggunakan perintah dari jawaban yang diterima di kunci registri. Rupanya berjalan assocdiperlukan.
ajeh
@ajeh (maaf bieng leet ke party. Jika anda mendapatkan error itu, itu karena anda salah tanda kutip tunggal. pastikan anda menggunakan UTF-8. (gunakan notepad ++; jatuhkan kedua string tersebut, simpan sebagai file runme.cmd )
Paul Fijma
1

Di Windows 10 Anda mungkin juga ingin menghapus override Windows Explorer untuk asosiasi ekstensi file:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ps1\UserChoice

selain HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\open\commandperubahan yang disebutkan dalam jawaban lain.

Lihat https://stackoverflow.com/a/2697804/1360907

Chris Xue
sumber