Oke, saya kehilangannya. PowerShell mengganggu saya. Saya ingin dialog jeda muncul, dan tidak akan.
PS W:\>>> $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
Exception calling "ReadKey" with "1" argument(s): "The method or operation is not implemented."
At line:1 char:23
+ $host.UI.RawUI.ReadKey <<<< ("NoEcho")
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
powershell
Derrick Bell
sumber
sumber
if (!$psise) { <# pause #> }
. Jika Anda seperti saya dan 99% alasan Anda menginginkan jeda adalah agar Anda dapat membaca layar sebelum berkedip, maka ini akan membantu, karena jika Anda berada di ISE, layar tidak berkedip dan Anda tidak berkedip. tidak perlu jedaJawaban:
(Ini bukan cara PowerShell, tapi jauh lebih elegan.)
Selamatkan pohon. Gunakan satu baris.
sumber
Saya pikir ada gunanya merangkum / meringkas pilihan di sini untuk kejelasan ... kemudian menawarkan variasi baru yang saya percaya memberikan utilitas terbaik.
<1> ReadKey (System.Console)
<2> ReadKey (RawUI)
<3> cmd
<4> Host-Baca
<5> Komposit ReadKey
Ini adalah gabungan dari <1> di atas dengan solusi ISE / kludge yang diambil dari proposal di Blog Teknologi Adam (atas izin Nick dari komentar sebelumnya di halaman ini). Saya membuat dua perbaikan kecil pada yang terakhir: menambahkan Test-Path untuk menghindari kesalahan jika Anda menggunakan Set-StrictMode (Anda melakukannya, bukan ?!) dan Write-Host terakhir untuk menambahkan baris baru setelah penekanan tombol Anda untuk meletakkan cepat di tempat yang tepat.
sumber
AllowCtrlC
parameter ke pilihan 2 memungkinkan pengguna untuk mengklik Ctrl + C tanpa menghentikan skrip. Namun demikian, pilihan ini tetap tidak mengecualikan tombol pengubah Ctrl dengan benar. (Ini bertindak seolah-olah pengguna hanya mengklik tombol Ctrl) Referensi: Microsoft TechNet - Windows PowerShell Tip: Tekan Tombol Apa Saja untuk MelanjutkanSaya berasumsi bahwa Anda ingin membaca masukan dari konsol. Jika demikian, gunakan
Read-Host
.sumber
Solusi seperti
cmd /c pause
menyebabkan penerjemah perintah baru untuk memulai dan berjalan di latar belakang. Meskipun dapat diterima dalam beberapa kasus, ini tidak terlalu ideal.Solusi yang digunakan
Read-Host
memaksa pengguna untuk menekan Enterdan sebenarnya bukan "tombol apa pun".Solusi ini akan memberi Anda antarmuka "tekan sembarang tombol untuk melanjutkan" dan tidak akan memulai penerjemah baru, yang pada dasarnya akan meniru
pause
perintah asli .sumber
Selain jawaban Michael Sorens :
<6> ReadKey dalam proses baru
sumber
-NoNewWindow
telah ditambahkan :)