Cmdlet Read-Host Powershell menyebabkan hang ketika skrip dijalankan dari Cygwin

Saya mencoba menjalankan skrip PowerShell dari dalam Cygwin (pada akhirnya akan dijalankan melalui Cygwin SSH), dan saya menemukan bahwa masukan pengguna tampaknya diabaikan. Skrip menampilkan menu dan kemudian menggunakan Read-Host "Your selection:" untuk menerima masukan.

Ada kursor yang berkedip, tetapi teks "Pilihan Anda" tidak muncul, dan apa pun yang saya masukkan sepertinya hanya menulis ke konsol itu sendiri dan diabaikan oleh skrip.

Adakah yang tahu apa yang salah?

Terima kasih banyak.


person iank    schedule 03.07.2015    source sumber


Jawaban (1)


Saya kira konsol Cygwin tidak mengimplementasikan API yang menjadi sandaran host konsol Powershell (System.Management.Automation.Internal.Host.InternalHostUserInterface). Atau tidak menerapkannya seperti yang diharapkan. Ini pasti akan terjadi jika Anda mencoba menjalankan SSH. MS memiliki dokumentasi tentang cara menulis UI Host khusus. Jadi jika ingin menjalankan PS melalui SSH sepertinya ada 4 kemungkinan:

  1. Tulis implementasi PSHost Anda sendiri
  2. Temukan implementasi PSHost orang lain
  3. Gunakan klien SSH Anda stdin dan stdout sebagai pipa dua arah dan tulis REPL yang mengambil masukan dari pipa (SSH stdin) dan mengirimkan keluaran ke pipa (SSH stdout). Kecuali Anda menerapkannya sendiri, opsi ini berarti Anda kehilangan pengeditan baris, riwayat, penyelesaian tab, dll.
  4. Tidak yakin apakah ini akan berhasil, tetapi mungkin jumlah kode yang harus diterapkan akan paling sedikit jika berhasil. Buat proses PS anak. Arahkan ulang stdout anak, stdin ke proses PS induk. Semua input yang Anda dapatkan dari SSH stdin Anda tulis ke stdin PS anak dan semua output yang Anda baca dari stdout anak Anda tulis ke stdout SSH. Anda mungkin ingin menggunakan I/O asinkron untuk pembacaan di SSH stdin dan stdout anak, untuk mencegah hang (jika skrip menunggu pembacaan dari stdout anak, tetapi PS anak tidak memiliki keluaran lagi, maka skrip digantung ). Akibatnya pengguna SSH mengendalikan proses PS anak dan proses PS induk hanyalah perekat yang menggabungkan keduanya.
person Χpẘ    schedule 17.11.2015