جدول المحتويات
Toggleأحد أكبر المساهمين في هذا الارتفاع في الشعبية هو أن فريق PowerShell في Microsoft هو الذي نجح في ذلك مفتوحة المصدر في عام 2016، تقديم PowerShell Core للإصدار 6 من PowerShell. ومع ذلك، فقد تسبب ذلك في بعض المشكلات غير المتوقعة، مثل الاضطرار إلى دعم التوافق بين الإصدار 5.1 (Windows PowerShell) والإصدار 6.2 (PowerShell Core)، أو استخدام أوامر cmdlets نفسها للقيام بأشياء مختلفة قليلاً على إصدارات مختلفة من .شبكة.
لتسوية ذلك، أعلن فريق PowerShell أنهم سيتوقفون عن استخدام PowerShell 5.1 وأن الإصدار التالي بعد 6.2 سيكون بوويرشيل 7، والذي يهدف إلى استبدال Windows PowerShell على أنظمة تشغيل Windows دون التضحية بأي توافق عند التشغيل على Mac أو Linux.
بوويرشيل 7 ذهب GA في مارس من العام الماضي، وبينما تعمل أوامر cmdlets نفسها على أي نظام تشغيل، لا تزال هناك بعض أفضل الممارسات التي يجب اتباعها للتأكد من أن برامج PowerShell النصية تعمل بسلاسة بغض النظر عن مكان تشغيلها.
استخدم أسماء الدليل الصغيرة
في نظام التشغيل ويندوز،
\
يتم استخدام حرف الخط المائل العكسي أو الخط المائل العكسي لتدوين الدلائل المتداخلة في نظام الملفات، بينما في Linux وmacOS، يتم استخدام
/
أو يقوم حرف الشرطة المائلة للأمام بذلك بدلاً من ذلك ويتم استخدام الشرطة المائلة العكسية كحرف هروب. (إذا واجهتك مشكلة في الحفاظ على هذين المستقيمين، فقط تخيل أنهما ينقلبان. الشرطة المائلة العكسية تتراجع، والشرطة المائلة للأمام تتراجع)
قد يؤدي هذا إلى بعض التحديات عند البرمجة النصية بمعظم اللغات الأخرى، ولكن PowerShell 7 سيترجم إما إلى كائن دليل ولا يهتم حقًا بالأحرف المستخدمة لتقسيم المسار. ومع ذلك، فإن أحد المجالات التي يمكن أن تتعرض فيها للمشاكل هو أن أنظمة ملفات Linux وmacOS تهتم بالأحرف الكبيرة، وستتعامل مع أسماء الأدلة في حالات مختلفة على أنها أدلة مختلفة.
أفضل الممارسات هنا هي الاحتفاظ بأسماء الأدلة بأحرف صغيرة، بغض النظر عن المسار الذي تستخدمه. إذا كنت بحاجة إلى ذلك، يمكنك تمرير المسار كسلسلة واستدعاء
ToLower()
الطريقة عليه في التعليمات البرمجية الخاصة بك، ولكن هذا لن يعمل إلا إذا كان اسم الدليل مكتوبًا بأحرف صغيرة بالفعل.
لا تستخدم التعرج
يمكن أن يكون الاسم المستعار طريقة رائعة لتقصير كمية الكتابة التي يتعين عليك إجراؤها عند تشغيل PowerShell من وحدة التحكم. إنها أسهل بكثير في الكتابة
ls
أو
cgi
من
Get-ChildItem
حتى مع اكتمال علامة التبويب. ومع ذلك، نادرًا ما يكون استخدام الأسماء المستعارة في البرامج النصية فكرة جيدة لأنها تجعل البرنامج النصي يعتمد على تعيين هذا الاسم المستعار أينما يتم تشغيله.
وهذا ينطبق بشكل خاص على أنظمة Linux وmacOS. على تلك الأنظمة الأساسية، بدلاً من استخدام اسم مستعار لتشغيل أمر PowerShell آخر، فإنه يقوم بتشغيل الأمر الأصلي، مما يعني أن كائن الإرجاع سيكون مختلفًا تمامًا، وسيؤدي ذلك إلى التخلص من بقية البرنامج النصي.
ls
و
Get-ChildItem
يعمل على نظام التشغيل Windows 10 مقابل Ubuntu Linux.
بعض الأوامر مثل
ls
قد لا يتغير كثيرًا، ولكن مع الآخرين مثل
date
الأمر، يقوم PowerShell بإرجاع كائن مختلف تمامًا عن أمر Linux الأصلي، والذي سيؤدي إلى التخلص من أي شيء يعتمد على الإخراج لاحقًا في التعليمات البرمجية. حتى إذا كنت تحتاج فقط إلى قيمة السلسلة في برنامج PowerShell النصي، فاستخدم PowerShell للحصول عليها.
date
تقوم بإرجاع كائن DateTime على Windows وكائن String على Linux.
استخدم بيان التبديل لتحديد نظام التشغيل
في بعض الأحيان، يكون لديك تبعية لا يمكنك الكتابة حولها، بغض النظر عن أنواع الحيل التي تستخدمها. في هذه الحالات، يحتوي PowerShell 7 على عدد قليل من العلامات المحجوزة التي ستعود
true
أو
false
اعتمادا على نظام التشغيل الذي تعمل منه. على سبيل المثال،
$IsMacOS
سوف يعود
True
على نظام التشغيل MacOS و
False
على أي نظام تشغيل آخر، و
$IsLinux
سوف يعود
True
بغض النظر عن توزيعة Linux التي تستخدمها.
هناك أيضا
$IsWindows
العلم، ولكن مع تحذير واحد كبير: إنه يعود فقط
True
عند تشغيل PowerShell Core أو PowerShell 7 على نظام التشغيل Windows. لم يتم إعادته مطلقًا إلى Windows PowerShell، لذلك سيؤدي فقط إلى ظهور خطأ عند التشغيل هناك.
توصل تايلر ليونهارت من فريق PowerShell في Microsoft إلى حل رائع لتحديد نظام التشغيل الذي تستخدمه عند تشغيل النظام الأساسي المشترك، وهو بيان التبديل الذي يصفه هنا.
الآن يجب أن تكون لديك فكرة عن بعض الطرق لكتابة البرامج النصية والوحدات النمطية الخاصة بـ PowerShell 7 حتى تتمكن من تشغيلها بسلاسة أكبر عبر الأنظمة الأساسية. جربها في البرامج النصية الخاصة بك اليوم!
(العلامات للترجمة)مايكروسوفت