Windows build number: Microsoft Windows [Version 10.0.18363.657]
Windows Terminal Version: 0.9.433.0
قم بتشغيل هذا في PowerShell:
wt `
new-tab -p PowerShell` Core`;`
split-pane -H -p Windows` PowerShell `;`
split-pane -p cmd
يجب أن أحصل على علامة تبويب جديدة مقسمة مرتين (ثلاثة أجزاء)
[error 0x80070002 when launching `
split-pane -H -p "Windows PowerShell"']
و
[error 0x80070002 when launching `
split-pane -H -p "Windows PowerShell"']
اكتشفت أخيرًا أنه إذا أضفت مسافة بعد كل ;
فإنها تعمل (باستثناء # 4618):
wt `
new-tab -p PowerShell` Core`; `
split-pane -H -p Windows` PowerShell `; `
split-pane -p cmd
تضمين التغريدة
حاولت إضافة إرجاع السطر وتغذية السطر إلى فواصل الرموز لتحليل سطر الأوامر في اختباراتي لـ # 4724. لكن عندما حاولت تشغيل مثالك ، اتضح أن العلامة الخلفية لا تفلت أبدًا من السطر الجديد ما لم يسبقها مسافة. بغض النظر عن التطبيق الذي تحاول الاتصال به. أي حرف آخر (ليس فقط الفاصلة المنقوطة) مباشرة أمام العلامة الخلفية لن يؤدي إلى الهروب من السطر الجديد في وحدة تحكم PowerShell. هل يمكنك تأكيد؟ أعتقد أنها بالأحرى مشكلة PowerShell.
إذا قمت بتشغيل المثال الخاص بك من داخل غلاف CMD (تم تجاوز السطر الجديد باستخدام ^
) فإنه يعمل بالفعل حتى بدون وجود \ r و \ n كفواصل رمزية في التعليمات البرمجية المصدر الطرفية.
wt ^
new-tab -p "PowerShell Core";^
split-pane -H -p Windows` PowerShell ;^
split-pane -p cmd
في الواقع ، نعم ، عندما أقوم بتشغيل المثال من الإصدار الأصلي ولكن أضع مسافات أمام backticks الهروب من السطر الجديد ، أحصل على هذا:
يبدو وكأنه مشكلة في كيفية هروب بوويرشيل من الأسطر الجديدة.
أنت محق تماما. أنا آسف - قصدت الخروج بمثال خالص من PowerShell لبناء الجملة (أو استخدام echoargs.exe) حتى أتمكن من معرفة ما كان يحدث على وجه اليقين ، ولم أفعل ذلك قبل تقديم المشكلة. في حالة ما إذا كان ذلك سيساعد في المناقشات مع مستخدمي PowerShell الآخرين مثلي - الذين نسوا أن PowerShell يفعل سلاسل _مبسطة_ - إليك مثال بسيط لما يفعله PowerShell بشكل خاطئ:
ملاحظة: تأخذ Write-Host أي عدد من معلمات السلاسل
وبالطبع ، إذا قمت بتمرير سلسلة غريبة من هذا القبيل إلى أمر "أصلي" ، فإن PowerShell يلفها بين علامتي اقتباس:
ما يحدث في الأساس هو هذا:
عندما لا نترك مسافة بين `;
(الذي هربنا منه ، لذلك فهو مجرد سلسلة) والسطر الجديد ، فإن PowerShell ملزم بافتراض أنه جزء من سلسلة ، وليس سطرًا منفصلاً - علامة استمرار. يمكننا تجنب ذلك من خلال فصلها عن السلسلة _ ضمنيًا_ بمسافة (كما فعلت في "الحل البديل" أعلاه) ، أو صراحةً ، بوضع علامات الاقتباس حول السلسلة:
wt `
new-tab -p "PowerShell Core" ";"`
split-pane -H -p "Windows PowerShell" ";"`
split-pane -p cmd