Windows build number: Microsoft Windows [Version 10.0.18363.657]
Windows Terminal Version: 0.9.433.0
Jalankan ini di PowerShell:
wt `
new-tab -p PowerShell` Core`;`
split-pane -H -p Windows` PowerShell `;`
split-pane -p cmd
Saya harus membagi tab baru dua kali (tiga panel)
[error 0x80070002 when launching `
split-pane -H -p "Windows PowerShell"']
dan
[error 0x80070002 when launching `
split-pane -H -p "Windows PowerShell"']
Saya akhirnya menemukan bahwa jika saya menambahkan spasi setelah setiap ;
maka itu berfungsi (kecuali untuk # 4618):
wt `
new-tab -p PowerShell` Core`; `
split-pane -H -p Windows` PowerShell `; `
split-pane -p cmd
@Tokopedia
Saya mencoba menambahkan carriage return dan umpan baris ke pemisah token untuk penguraian baris perintah dalam pengujian saya untuk # 4724. Tetapi ketika saya mencoba menjalankan contoh Anda ternyata centang belakang tidak pernah luput dari baris baru kecuali diawali dengan spasi. Terlepas dari aplikasi yang Anda coba panggil. Karakter lain (tidak hanya titik koma) tepat di depan centang belakang tidak akan memicu keluarnya baris baru di konsol PowerShell. Bisakah kamu mengkonfirmasi? Saya kira ini lebih merupakan masalah PowerShell.
Jika Anda menjalankan contoh Anda dari dalam shell CMD (baris baru lolos menggunakan ^
) itu sudah berfungsi bahkan tanpa \ r dan \ n sebagai pemisah token di kode sumber terminal.
wt ^
new-tab -p "PowerShell Core";^
split-pane -H -p Windows` PowerShell ;^
split-pane -p cmd
Sebenarnya, ya, ketika saya menjalankan contoh dari edisi asli tetapi meletakkan spasi di depan backticks yang keluar dari baris baru, saya mendapatkan ini:
Sepertinya masalah bagaimana PowerShell menangani baris baru yang lolos.
Anda benar sekali. Saya minta maaf - Saya bermaksud untuk membuat contoh murni-PowerShell dari sintaks itu (atau menggunakan echoargs.exe) sehingga saya dapat mengetahui dengan pasti apa yang sedang terjadi, dan saya tidak melakukannya sebelum mengajukan masalah. Jika itu akan membantu dengan diskusi dengan pengguna PowerShell lain seperti saya - yang lupa bahwa PowerShell melakukan string _implied_ - berikut adalah contoh sederhana dari kesalahan yang dilakukan PowerShell:
Catatan: Write-Host menggunakan sejumlah parameter string
Dan tentu saja, jika Anda meneruskan string aneh seperti itu ke perintah "native", PowerShell akan membungkusnya dengan tanda kutip:
Pada dasarnya, yang terjadi adalah ini:
Ketika kita tidak meninggalkan spasi antara `;
(yang telah kita escape, jadi itu hanya string) dan baris baru, PowerShell wajib menganggapnya sebagai bagian dari string, dan bukan baris terpisah tanda -kontinuitas. Kita dapat menghindari ini dengan memisahkannya dari string _implicitly_ dengan spasi (seperti yang saya lakukan di "solusi" saya di atas), atau secara eksplisit, dengan meletakkan tanda kutip di sekitar string:
wt `
new-tab -p "PowerShell Core" ";"`
split-pane -H -p "Windows PowerShell" ";"`
split-pane -p cmd