وظيفة الكراهية لـ Mighty Shell

لقد كتبت ذات مرة نصًا برمجيًا بسيطًا منذ فترة طويلة يحذف جميع الأدلة الفرعية ذات الأسماء المعينة في الدليل المحدد:



Remove-Item * -Force -Recurse -Include name1,name2,name3 -ErrorAction SilentlyContinue


لم أستخدمه منذ فترة طويلة ، ولكن هنا كان مطلوبًا. قمت بتشغيله - لم أحذف أي شيء.



"WTF؟" على ما أعتقد. بدأ بالحفر. لقد قمت بالعبث والعبث ، وذهبت في كل شيء ، وكنت قد أنشأت القائمة مسبقًا ، وقمت بتغيير الأسماء - ما زالت لا تحذف أي شيء. في النهاية ، قرأت في قفص الاتهام الخاص بهم: "في الواقع ، -Include هي عربات التي تجرها الدواب عند استخدامها مع -Recurse ، لذا استخدم عكازًا. ":

نظرًا لأن المعلمة Recurse في Remove-Item لها مشكلة معروفة ، فإن الأمر الموجود في هذا المثال يستخدم Get-ChildItem للحصول على الملفات المطلوبة ، ثم يستخدم عامل تشغيل خط الأنابيب لتمريرها إلى Remove-Item.


حسنًا ، حسنًا ، لقد أعدت كتابتها باستخدام هذا العكاز. جحيم واحد لا يزيل أي شيء. وعلاوة على ذلك، الحصول على-ChildItem مع -Include عوائد فارغة. مرة أخرى ، ما لم أفعله للتو ، لأنني لم أشوه بالمعلمات ، لا يعمل. الشيء الرئيسي هو أنه يعمل مع -Exclude ، ولكن لا شيء مع -Include . لقد قتلته طوال اليوم: اعتقدت أنني قد أفسدت في مكان ما في المعايير ، وأنني لم آخذ في الاعتبار بعض الفروق الدقيقة الماكرة. وماذا حدث في النهاية؟ أضعهم على PS7.1 - لقد نجحت. حتى الإصدار الأول الذي لا يحتوي على شقوق باستخدام إزالة العنصر فقط كان يعمل فيه. بشكل عام ، اتضح أنه خطأهم.



لكن بعد أن استنزفت مع Mighty Shell ، ذهبت إلى Google لأقرأ لماذا تتمتع قوقعتها بهذا التركيب الغاضب. Mlyn ، وضعوها كـ .NET لوحدة التحكم ، لكنهم لا يشمون حتى برائحة بناء جملة C #. بدلاً من ذلك ...



بشكل عام ، صادفت هذا المقال: " ما أكرهه في PowerShell ". كما يقول المثل: "لا أستطيع أن أتفق أكثر".



أظن أن فريق مايتي شيل عبارة عن مجموعة من عشاق باش.



- دعنا أخيرًا نصنع وحدة تحكم Windows حيث سيكون من الممكن كتابة نصوص معقدة. ومن ثم أصبح cmd قديمًا ، لدرجة أننا نشعر بالخجل قليلاً بالفعل.

— ! ? VBScript, JScript. , .NET: C#, VB. , C# ? , C# . , .NET .

— , , , C#? bash! bash Windows. , bash , , 1960-. , , ! — ! . . , . ?



All Articles