عندما تواجه الهاشتابلز لأول مرة ، قد تتساءل ما هي وكيف تلعب دورًا حاسمًا في البرامج النصية أو الأوامر الخاصة بك. لا تقلق! ستغطي هذه الدروس التعليمية بدء استخدام الهاشتابلز في PowerShell.
بشكل مبسط ، تتيح لك الهاشتابلز تخزين وتلاعب البيانات باستخدام أزواج المفاتيح-القيمة ، والتي يمكن الوصول إليها بسرعة وكفاءة. وفي هذه الدروس التعليمية ، ستتعلم أساسيات الهاشتابلز وكيفية استخدامها في البرامج النصية والأوامر الخاصة بك في PowerShell.
استمر في القراءة وابدأ في توسيع مجموعة مهاراتك مع الهاشتابلز في PowerShell!
المتطلبات المسبقة
سيتم تقديم هذه الدروس التعليمية كعرض توضيحي عملي. لمتابعة الدروس ، تأكد من أن لديك نظام مثبت ومكون PowerShell v5+ ومكون. تستخدم هذه الدروس التعليمية Windows 10 مع PowerShell 7 ، ولكن إصدارات PowerShell و Windows الأخرى ستعمل أيضًا.
إنشاء هاشتابلز في PowerShell
يمكن أن يتحول استرجاع البيانات المحددة إلى “البحث عن إبرة في كومة قش”. ولكن باستخدام الهاشتابلز ، يمكنك البحث بسرعة في عناصر معينة في مجموعة بيانات واسعة.
في PowerShell ، تعتبر الهاشتابلز هياكل بيانات مرنة تُستخدم بطرق عديدة ، مثل تخزين بيانات التكوين وتمرير الوسائط إلى cmdlets وتخزين البيانات في نص برمجي.
لرؤية كيفية عمل الهاشتابلز في PowerShell ، يجب عليك أولاً إنشاء واحدة على النحو التالي:
1. افتح جلسة PowerShell وقم بتشغيل الأمر التالي، الذي لا ينتج إخراجًا ولكن يعلن عن متغير يُسمى name
للإشارة إلى جدول تجويف فارغ.
كما يمكنك رؤية أدناه، بشكل مشابه للمصفوفات في PowerShell، يتم تعريف الجداول التجويفية باستخدام الرمز @
.
2. بعد ذلك، قم بتشغيل الأمر أدناه للتحقق من نوع متغير name
(GetType()
).
نوع متغير name
هو Hashtable، كما هو موضح أدناه. تؤكد هذه المعلومات أن الجدول التجويفي تم إنشاؤه بنجاح.

3. بعد التحقق من الجدول التجويفي، قم بتشغيل الشيفرة التالية للتحقق مما إذا كان الجدول التجويفي فارغًا أم لا.
تُحدد الشيفرة أدناه ما إذا كانت خاصية Count
تكون متساوية (-eq
) لـ 0
، وتقوم بطباعة رسالة متوافقة.
أدناه ، يمكنك رؤية جدول التجزئة فارغًا لأنك أنشأته للتو ، ولا توجد أزواج مفتاح-قيم محددة فيه.

إضافة العناصر إلى جدول التجزئة في باور شيل
لقد أنشأت للتو جدول تجزئة في باور شيل شبه فارغ ، والذي لا يمكن أن يكون مفيدًا إلا إذا قمت بإضافة العناصر. كيف؟ عن طريق إضافة أزواج مفتاح-قيم إلى جدول التجزئة.
شبيه بمصفوفة ، ولكن بدلاً من استخدام الأعداد الصحيحة كفهارس ، يستخدم جدول تجزئة باور شيل مفاتيح (التي يمكن أن تكون أي نوع من البيانات) لتحديد القيم. تتيح هذه الميزة إدخالًا سريعًا واستردادًا وحذف العناصر من جدول التجزئة ، حيث تحدد المفتاح بسرعة القيمة المقابلة.
فيما يلي بناء جملة لإضافة زوج مفتاح-قيم إلى جدول تجزئة في باور شيل ، حيث:
$hashtable
– اسم جدول التجزئة.$key
– اسم المفتاح ، والذي غير حساس لحالة الأحرف. على سبيل المثال ، سيعتبر “الاسم الأول” و “firstname” نفس المفتاح في جدول تجزئة$value
– القيمة المرتبطة بالمفتاح.
قم بتشغيل الشفرة التالية ، التي لا تنتج إخراجًا إلى وحدة التحكم ولكن تعلن أزواج مفتاح-قيم ، وأضفها إلى جدول التجزئة الخاص بك ($name
).
في جدول التجزئة ، يتيح لك المفتاح أداء وظيفة تجزئة ، التي تختلف المفتاح إلى موقع محدد في هيكل البيانات الداخلي لجدول التجزئة.
? يمكن أن تكون قيم جدول التجزئة من أي نوع ، مثل الأرقام والسلاسل والمصفوفات والكائنات وأنواع البيانات الأخرى كقيم في جدول التجزئة.
الآن، أعِد تشغيل الشيفرة أدناه للتحقق مما إذا كان الجدول الزمني الخاص بك فارغًا.
كما هو موضح أدناه، ستتلقى رسالة تفيد بأن الجدول الزمني ليس فارغًا هذه المرة.

استرجاع العناصر من جدول زمني PowerShell
لنفترض أنك واثق من أن الجدول الزمني الخاص بك ليس فارغًا. كيف تعرف أي عناصر موجودة في الجدول الزمني الخاص بك؟ لحسن الحظ، يمكنك استرجاع العناصر من الجدول الزمني الخاص بك أيضًا.
قم بتشغيل الشيفرة أدناه لاسترجاع وإخراج (Write-Output
) جميع العناصر من الجدول الزمني الخاص بك في أزواج المفتاح والقيمة، واحدة لكل سطر.`

الآن، قم بتشغيل الشيفرة أدناه لاسترجاع وطباعة (Write-Output
) جميع العناصر في الجدول الزمني إلى وحدة التحكم.
? لاحظ أنه ستستخدم الرمز التالي في هذا البرنامج التعليمي بشكل متكرر. يمكنك تجنب نسخ ولصق نفس الرمز عدة مرات عن طريق إنشاء وظيفة، ولكنها خارج نطاق هذا البرنامج التعليمي.
هذه المرة، يمكنك رؤية مؤشرات للمفاتيح والقيم بين العناصر المدرجة.

إنشاء جداول التجزئة بقيم محددة مسبقًا
حتى الآن، لقد نظرت فقط إلى إنشاء جداول التجزئة الفارغة. ولكن إذا كنت تعرف أنه سيتم دائمًا الحاجة إلى قيم معينة في جدول التجزئة الخاص بك، فيمكنك إنشاء واحدة بقيم محددة مسبقًا.
جداول التجزئة ذات القيم المحددة مسبقًا يمكنها توفير الوقت وجعل رمزك أكثر كفاءة حيث لا يتعين عليك إضافة القيم إلى جدول التجزئة لاحقًا.
? لاحظ أن إنشاء جداول التجزئة لا ينتج إخراجًا. ولكن لا تقلق. في هذا البرنامج التعليمي، ستتحقق من جداول التجزئة بعد إنشائها.
1. قم بتشغيل الأمر أدناه لإنشاء جدول تجزئة ($hashtable1
) يحتوي على ثلاثة أزواج مفتاح-قيمة.
2. بعد ذلك، قم بتشغيل الرمز التالي للتحقق من وجود جدول التجزئة الجديد (hashtable1
).
سوف ترى أن القيم لكل زوج مفتاح-قيمة يتم طباعتها على الشاشة كما هو متوقع. يؤكد هذا الإخراج أن القيم المحددة مسبقًا مخزنة في المواقع المناسبة في الجدول الزمني.

3. الآن، قم بتشغيل الشيفرة أدناه لإنشاء جدول زمني ($hashtable2
) بقيم محددة مسبقًا باستخدام حلقة تكرار (أو مصفوفة).
4. أخيرًا، قم بتشغيل الشيفرة أدناه للتحقق من أن الجدول الزمني الجديد (hashtable2
) تم إنشاؤه بنجاح.
الإخراج أدناه يؤكد أن طريقة الحلقة تعمل عند إنشاء جدول زمني بقيم محددة مسبقًا. ولكن نظرًا لأن العناصر مدرجة بشكل عشوائي، انتقل إلى القسم التالي للحصول على حل.

إنشاء قائمة مرتبة للعناصر في الجداول الزمنية
بشكل افتراضي، تُخزن العناصر في جدول زمني بلا ترتيب محدد. ولكن ماذا لو كنت بحاجة إلى قائمة مرتبة؟ يمكنك أيضًا إنشاء قائمة مرتبة من العناصر في جداول الزمنية الخاصة بك لترتيب البيانات في ترتيب محدد.
لإنشاء قائمة مرتبة من العناصر في جدول الزمني الخاص بك، استخدم السمة [ordered]
على النحو التالي:
1. قم بتشغيل الكود التالي لإنشاء قائمة [ordered]
من العناصر في جدول التجزئة ($hashtable3
).
2. بعد ذلك، قم بتشغيل الكود التالي للتحقق من أن قائمة الجداول المرتبة قد تم إنشاؤها بنجاح.
كما هو موضح أدناه، تظل العناصر المدرجة في الترتيب الذي حددته عند إنشاء جدول التجزئة.
بعض الفوائد المحتملة لاستخدام جدول تجزئة مرتب تشمل ولكن لا تقتصر على ما يلي:
Benefits | Description |
Easier to read and debug | The elements are displayed in a predictable order, which can be especially useful if you work with many elements of a large hashtable. |
Improved performance | An ordered hashtable can be more efficient when accessing elements frequently in a specific order. |

3. في الختام، قم بنداء جدول التجزئة الخاص بك ($hashtable3
) لتأكيد مرة أخرى أنك ستحصل على قائمة مرتبة من العناصر.
الإخراج أدناه يؤكد أنك ستحصل على قائمة مرتبة من العناصر بغض النظر عن كيفية الوصول إلى جدول التجزئة الخاص بك.

تحديث العناصر الحالية في جداول التجزئة
تتغير البيانات باستمرار وإذا كان لديك جداول تجزئة حالية، فإن تحديثها هو مهمة حاسمة. على سبيل المثال، إذا كنت تستخدم جدول تجزئة لتخزين قيم التكوين. إذا كان الأمر كذلك، قد تحتاج إلى تحديث قيمة مفتاح إذا تغير التكوين.
لتحديث جدول تجزئة PowerShell، سيقوم مشغل التعيين =
بالقضاء على الأمر كما يلي:
1. قم بتشغيل الأمر أدناه، الذي لا يقدم إخراجًا، ولكنه يحدث قيمة المفتاح Key2
في $hashtable3
إلى NewValue2
.
ثم، قم بتشغيل الأمر أدناه لـ \code{Add()} زوج مفتاح-قيمة جديد (\code{Key4 = NewValue4} إلى الجدول المجزأ (\code{\$hashtable3}).
إضافة زوج مفتاح-قيمة جديد لا ينتج مخرجات مثل تحديث القوائم الموجودة في الجداول المجزأة، لكن ستتحقق من التغييرات في الخطوة التالية.
3. قم بتشغيل الكود التالي للتحقق من أن قيم المفاتيح في جدول المفاتيح الخاص بك (\code{\$hashtable3}) قد تم تحديثها.

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

4. الآن، قم بتشغيل الكود التالي، الذي يستخدم طريقة \code{Contains()} للتحقق مما إذا كان المفتاح الذي تحاول إضافته موجودًا بالفعل في جدول المفاتيح قبل إضافة زوج مفتاح-قيمة.
إذا لم يكن المفتاح الجديد موجودًا، ستحصل على الرسالة أدناه، التي تقول أن المفتاح الجديد تمت إضافته إلى جدول المفاتيح.

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

5. وأخيرًا، قم بإعادة تشغيل الكود أدناه لاسترداد جميع العناصر في الجدول الخاص بك ($hashtable3
).
أدناه، يمكنك رؤية المفتاح الجديد المضاف (Key5) والعناصر الأخرى التي قمت بإضافتها حتى الآن إلى الجدول الخاص بك.

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

الآن، قم بتشغيل الكود التالي للتحقق من جميع العناصر في الجدول الخاص بك والتحقق مما إذا كان حذف العنصر ناجحًا.
بالأسفل، يمكنك التحقق من أن زوج المفتاح والقيمة بالمفتاح ‘Key5’ لم يعد موجودًا في جدول التجزئة الخاص بك.

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