مصفوفات PowerShell: كيفية إنشائها واستخدامها


المتغيرات هي بنية البيانات الأساسية في أي نوع من الترميز. لكن المتغيرات الفردية لا تكفي لمعظم الأغراض، خاصة عند التعامل مع خوارزميات أكثر تعقيدًا.

هنا يأتي دور المصفوفات. سواء كانت لغة C++ أو بايثون ، فإن المصفوفات موجودة في كل لغة برمجة بشكل ما. ولكن ماذا عن Windows PowerShell؟ كيف تعمل صفائف PowerShell؟ كيف تستخدمها؟ ما هو بناء الجملة؟ دعنا نكتشف ذلك.

مصفوفات PowerShell 101

ببساطة، المصفوفة هي مجرد مجموعة منظمة من المتغيرات. تتمثل الفكرة في التخلص من متاعب تتبع العشرات من الأسماء عن طريق دمج المتغيرات ذات الصلة في مجموعة مرقمة.

في PowerShell، يمكنك إنشاء متغير عن طريق إضافة الرمز $ إلى اسم المتغير. على سبيل المثال:

$prime = 13

يمكن أن يحتوي المتغير على أي نوع بيانات، من الأرقام إلى السلاسل النصية. كل ما عليك فعله هو استخدام علامات الاقتباس المزدوجة أو المفردة لتحديد سلسلة.

$name = "ليفين"

الآن لإنشاء مصفوفة جديدة، ما عليك سوى تعيين قيم متعددة لنفس المتغير، مفصولة بفواصل. مثل هذا:

$week = "الاثنين"، "الثلاثاء"، "الأربعاء"، "الخميس"، "الجمعة"، "السبت"، "الأحد"

يفضل بعض الأشخاص إدراج متغير بشكل صريح في مصفوفة لتجنب الارتباك، على الرغم من أن ذلك ليس ضروريًا. للقيام بذلك، ضع القيم بين قوسين مسبوقين بالرمز @.

$week = @("الاثنين"، "الثلاثاء"، "الأربعاء"، "الخميس"، "الجمعة"، "السبت"، "الأحد")

يكون هذا مفيدًا عادةً عند محاولة وضع مخرجات الأوامر الأخرى في مصفوفة، حيث لا يمكنك كتابتها يدويًا بالتنسيق الصحيح.

إنشاء مصفوفة

لقد رأينا بالفعل الطريقة الأكثر شيوعًا لإنشاء المصفوفة. ولكن اعتمادًا على الموقف، هناك طرق أخرى قد تكون أكثر ملاءمة. على سبيل المثال، إذا كنت تريد إنشاء مصفوفة تحتوي على نطاق من الأرقام، فيمكنك استخدام عامل النطاق:

$digits = (0..9)

سيؤدي هذا إلى إنشاء مصفوفة من جميع الأرقام العشرة من صفر إلى تسعة. يمكنك أيضًا تهيئة مصفوفة فارغة، في حالة رغبتك فقط في الحصول على مكان لتخزين القيم لاحقًا..

قيم $ = @()

يمكن أيضًا دمج المصفوفات المتعددة في بعضها البعض، على الرغم من أن هذا النوع من الاستخدام يمكن أن يصبح مربكًا بسرعة كبيرة.

الإحداثيات $ = @(
    (5, 10, 23),
    (11, 7, 16)
)

افتراضيًا، يمكن للمصفوفة تخزين أي نوع متغير، سواء كان أرقامًا أو سلاسل نصية أو مزيجًا من الاثنين معًا. ولكن يمكنك تحديد النوع بشكل صريح في حالة رغبتك في تحديد القيم الموضوعة فيه. على سبيل المثال:

[int[]] $numbers = 2,3,4,5

بهذه الطريقة، يمكن للمصفوفة أن تحتوي على أعداد صحيحة فقط. ستؤدي محاولة تعيين أي نوع آخر من القيمة إليه إلى حدوث خطأ. يمكن أن يكون هذا مفيدًا لمنع الأخطاء البسيطة للمصفوفات التي تعمل حصريًا مع القيم الرقمية، نظرًا لأن إدخال سلسلة في متغير لاستخدامه في العمليات الحسابية سيؤدي إلى حدوث مشكلات.

الوصول إلى المصفوفات

لقد رأينا حتى الآن طرقًا متعددة لإنشاء صفائف تحتوي على أنواع مختلفة من البيانات. ولكن كيف يمكنك الوصول إلى هذه البيانات؟

تستخدم صفائف PowerShell نفس التنسيق الذي تستخدمه لغات البرمجة الأخرى. يمكن الوصول إلى كل متغير مصفوفة من خلال رقم الفهرس الخاص به. على سبيل المثال:

$var = $numbers[5]

سيؤدي هذا إلى نسخ القيمة المخزنة في الفهرس الخامس من المصفوفة $numbersفي المتغير $var. لاحظ أن مؤشرات المصفوفة تبدأ العد من 0، لذلك يتم الوصول إلى العنصر الأول بصفر.

إذا أردنا إخراج هذا، على سبيل المثال:

"$days[2]"

سيأتينا يوم الأربعاء، وليس الثلاثاء.

يمكنك استخدام نفس الطريقة لتعديل هذه القيم أيضًا. على سبيل المثال، سيؤدي الأمر التالي إلى تغيير العنصر الثاني في المصفوفة إلى صفر:

$numbers[1] = 0

يمكنك أيضًا إضافة المزيد من العناصر إلى مصفوفة موجودة بدلاً من تغيير قيم الإدخالات الحالية فقط عن طريق إضافتها مثل التعبير الحسابي.

$names += "جوني"

يمكن استخدام هذه الطريقة لإضافة إدخالات متعددة مرة واحدة أيضًا، أو حتى مصفوفات بأكملها.

$names += "تشارلي، ليام، تيريزا"

أسماء $ += $ألقاب

تسمح الطريقة المفصولة بفواصل بالوصول إلى عناصر مصفوفة متعددة أيضًا. يؤدي إدخال هذا، على سبيل المثال، إلى تخزين العناصر الخمسة الأولى من $daysفي $weekdays..

$أيام الأسبوع = $days[0,1,2,3,4]

التكرار عبر المصفوفات

يعد الوصول يدويًا إلى عناصر معينة من المصفوفة أمرًا جيدًا وجيدًا، ولكن إذا كنت تريد تنفيذ إجراءات على محتويات المصفوفة بأكملها، فقد يصبح الأمر مملاً. الطريقة الأكثر أناقة هي استخدام حلقة For.

يمكن أن تمر حلقات For بشكل منهجي عبر جميع عناصر المصفوفة، وتعالج كل قيمة وفقًا للتعليمات. هذه هي الطريقة التي يمكنك من خلالها إنشاء مثل هذه الحلقة:

لـ ($i = 0 ; $i -lt $days.Length ; $i++)
{

    $days[$i]
}

ترجع الدالة array.Length حجم المصفوفة، وهو في الأساس عدد العناصر الموجودة فيها. ويمكن توصيل ذلك بمعلمة تعبير اختبار حلقة For للتكرار بشكل شامل على جميع العناصر.

يمكن لحلقة Foreach وحلقة كائن Foreach القيام بنفس الشيء باستخدام برنامج PowerShell النصي الأصغر حجمًا.

البحث (يوم في $أيام)
{

    $day
}

يوفر عليك هذا الجهد المبذول في تحديد حجم المصفوفة، مع ترك التفاصيل لـ PowerShell للتعامل معها.

متى يجب عليك استخدام مصفوفات PowerShell

إن أكبر مصدر للأخطاء في البرنامج النصي المعقد هو المتغيرات المرجعية بشكل غير صحيح. ويحدث هذا بسبب وجود عدد كبير من المتغيرات ذات الأسماء الفريدة، مما يجعل من الصعب تذكر الغرض منها.

إن أبسط حل لهذه المشكلة هو استخدام المصفوفات على نطاق واسع. يمكن تعيين كافة المتغيرات المرتبطة بطريقة ما إلى مصفوفة واحدة والوصول إليها من خلال أرقام الفهرس الخاصة بها.

مايكروسوفت باورشيل حالة الاستخدام الأساسية هي الأتمتة، وتلعب المصفوفات دورًا محوريًا في ذلك. يمكن تخزين الكائنات التي يتم إرجاعها بواسطة PowerShell cmdlets في صفائف وتكرارها. وهذا يسمح بتنفيذ المهام المتسلسلة تلقائيًا، مما يبسط إدارة النظام إلى حد كبير.

.

المنشورات ذات الصلة:


1.06.2022