باور شيل هو لغة سيناريو قوية توفر العديد من الميزات للتشغيل التلقائي وإدارة الأنظمة القائمة على نظام Windows. أحد أكثر البنى المستخدمة بشكل شائع هو حلقة while
في PowerShell.
لا تقلق إذا كنت قد تعثرت في حلقة لانتهاء النهاية أثناء محاولة تعلم سكربت باور شيل. دع حلقة while
في باور شيل ترشدك إلى الهروب الكبير. وفي هذا البرنامج التعليمي، ستعود إلى أساسيات العمل مع حلقات while
في باور شيل أثناء كتابة سكربتاتك.
استمر في القراءة لرفع مهارات سكربت باور شيل إلى المستوى التالي!
المتطلبات المسبقة
- A Windows machine – This tutorial uses Windows 10.
- يجب أن يكون لديك Windows PowerShell 5.0 أو أحدث مثبتًا – يستخدم هذا البرنامج التعليمي PowerShell 7.
- A user account with administrator privileges.
تنفيذ حلقات while
بشرط واحد
أحد أنواع حلقة while
الأبسط هو نوع الشرط الفردي. على عكس عبارة If
، تنفذ هذه الحلقة نوعًا معينًا من الأوامر طالما يُقَدَّر الشرط المحدد بأنه صحيح. عندما يتم إرجاع “False”، تتوقف الحلقة ويستمر التنفيذ مع باقي السيناريو.
أدناه هو بناء الجملة لحلقة الـwhile
مع شرط واحد:
- أول شيء ستلاحظه هو استخدام الأقواس. يجب أن يتم إحاطة الشرط بالأقواس، بينما يعتبر كتلة الشفرة مجموعة من أوامر PowerShell التي تُنفذ بينما الشرط صحيح.
- الشيء الثاني الذي يجب ملاحظته هو أن الشرط يجب أن يعيد قيمة بوليانية، التي تُقيم إما إلى صحيح أو خطأ.
قم بتشغيل الشفرة أدناه، حيث يبدأ قيمة $val
بالقيمة 0
ويتم زيادتها بمقدار 1
في كل مرة يتم تنفيذ كتلة الشفرة حتى تصل قيمة متغير $val
إلى 3
.
عندما تصل $val
إلى قيمة 3
، التي تجعل الشرط خطأ، يتم كسر الحلقة، ويستمر التنفيذ مع بقية النص البرمجي.

تنفيذ حلقة While في PowerShell مع المتغيرات المدمجة ($true
/$false
)
المثال السابق، باستخدام الشروط في حلقة while
، يعمل بشكل جيد. ولكن يمكنك أيضًا استخدام المتغيرات المدمجة في PowerShell، مثل $true
و $false
، لإنشاء حلقة While
.
الصيغة أدناه تُنفذ حتى لا يكون $true
بعد الآن $true
. بمعنى آخر، تعمل الحلقة إلى الأبد. ولكن يجب عليك دائمًا تضمين طريقة للخروج من حلقة لا نهائية. خلاف ذلك، ستبقى محبوسًا إلى الأبد. ستتعلم المزيد حول كيفية الخروج من حلقة باستخدام break
و continue
لاحقًا في هذا البرنامج التعليمي.
قم بتنفيذ كتلة الكود أدناه، التي تعمل بشكل دائم، وتطبع قيمة $i
إلى وحدة التحكم.
الآن، اضغط على Ctrl+C للخروج من الحلقة. تستهلك هذه الحلقة العديد من موارد النظام، لذا كن حذرًا عند استخدامها.

while
loop with PowerShell’s built-in ($true
) variableتنفيذ حلقات While
متعددة الشروط
بالإضافة إلى حلقات while
ذات شرط واحد، يمكنك أيضًا إنشاء حلقات while
ذات شروط متعددة. على غرار حلقة while
ذات شرط واحد، يجب أن تُرجع الشروط قيمة بولية، إما صح أو خاطئ.
فيما يلي بنية جملة لحلقة while
ذات شروط متعددة، تشبه بنية حلقة while
ذات شرط واحد. الفارق الرئيسي هو أنه يمكنك تضمين شروط متعددة مفصولة بواسطة العوامل التالية:
- و (
-and
) – يجب أن تكون كل الشروط صحيحة. - أو (
-or
) – يمكن أن يكون أحد الشروط صحيحًا.
قم بتنفيذ الشيفرة أدناه، حيث تكرر while
ما دامت قيمة $val
ليست متساوية (-ne
) لـ 3
-and
قيمة $i
ليست متساوية (-ne
) لـ 5
.
عندما تصل قيمتا المتغيرين إلى شروطهما الصحيحة، يتم كسر الحلقة ويستمر التنفيذ مع باقي النص البرمجي.

تنفيذ حلقة while مع المشغل AND

while
loop with AND operatorالآن، قم بتنفيذ الكود أدناه، الذي يطلب من المستخدم عمره، ويخزنه في المتغير $age
.
إذا أدخل المستخدم رقمًا أقل من (-lt
) 1
أو ليس رقمًا (-nomatch
)، يُطلب من المستخدم مرة أخرى إدخال رقم صالح. هذا السلوك مفيد في منح المستخدمين فرصًا متعددة لإدخال إدخال صالح.
في الناتج أدناه، يمكنك أن ترى أن المستخدم طلب منه إدخال عمره ثلاث مرات، على النحو التالي:
- أول مرة، دخل المستخدم عشرة، وهو ليس رقمًا.
- المرة الثانية، دخل المستخدم 0، وهو أقل من 1.
- المرة الثالثة، دخل المستخدم 10، وهو عمر صالح.

while
loop with the OR operatorاستخدام كلمات BREAK و CONTINUE في حلقات الـ While
لقد رأيت كيف تضيف حلقات الـ While مرونة إلى نص برمجي PowerShell الخاص بك. ولكن للتحكم بشكل أفضل في تنفيذ حلقات While الخاصة بك، أضف كلمتي الـ BREAK والـ CONTINUE.
على سبيل المثال، إذا كنت تريد فقط معالجة عدد معين من العناصر في مصفوفة، يمكنك استخدام كلمة BREAK للخروج من الحلقة عند معالجة العدد المطلوب من العناصر.
تعمل هذه الكلمات كما يلي:
Keyword | Function |
---|---|
break | Immediately exits the loop and continues execution with the rest of the script. |
continue | Skips over the remaining code block in the current iteration of the loop and continues with the next iteration. |
قم بتنفيذ الكود أدناه، الذي يكرر عبر مجموعة من 10 عناصر.
في الكود أدناه، يتحقق البيان الشرطي if
من قيمة $i
. إذا كانت قيمة $i
هي 5
، فإن كلمة CONTINUE تتخطى الشيفرة المتبقية في الحلقة وتستمر مع التكرار التالي. إذا كانت قيمة $i
هي 8
، فإن كلمة BREAK تخرج من الحلقة وتستمر مع بقية النص البرمجي.
وإلا، فإن حلقة الـ While تقوم بطباعة (Write-Host
) وتزيد قيمة متغير $i
بمقدار 1
.
كما يمكنك رؤية في الناتج أدناه ، تجاوزت الحلقة العناصر الخامسة والثامنة في المصفوفة. قامت الحلقة while بمعالجة جميع العناصر الأخرى في المصفوفة وخرجت بعد الوصول إلى العنصر الثامن.

while
loop with break
and continue
keywordsتحديد الوقت الذي تعمل فيه حلقة While
عادةً ما ترغب في تحديد مدى زمن تعمل فيه الحلقة. ربما تحاول الاتصال بخادم عن بعد. إذا كان الأمر كذلك ، يمكنك منح الخادم الوقت للرد قبل انتهاء المهلة والخروج من الحلقة باستخدام أمر Start-Sleep
داخل الحلقة while
.
الأمر Start-Sleep
يعلق تنفيذ السكريبت لمدة زمنية محددة.
قم بتنفيذ الكود أدناه للحصول على التاريخ والوقت الحالي وتخزينه في المتغير $startTime
. يعمل حلقة while
بينما يكون التاريخ/الوقت الحالي أقل من 10
ثوانٍ من القيمة المخزنة في $startTime
.
أثناء تشغيل حلقة while
، يتم طباعة رسالة بينما يعلق أمر Start-Sleep
تنفيذ السكريبت لمدة 1
ثانية.
يعد الكود أدناه نموذجًا أساسيًا لما قد تستخدمه فعليًا في الممارسة. يمكنك إضافة المزيد في الكود داخل الحلقة حسب الحاجة.
أدناه، يمكنك رؤية استمرار تشغيل الحلقة لمدة 10 ثوانٍ قبل الخروج من الحلقة.

while
loop runsالختام
تكون حلقات PowerShell while
مفيدة عند التعامل مع مفاهيم معقدة لتجنب الوقوع في حلقة لا نهاية لها أثناء كتابة النصوص البرمجية. وفي هذا البرنامج التعليمي، لقد تعلمت العديد من الطرق للعمل مع حلقات while
للحصول على نصوص أكثر مرونة وقوة.
مع هذا المعرفة الجديدة، السماء هي الحد الوحيد. لماذا لا تقوم بتحقيق الاستفادة القصوى من المشغلات المنطقية والكلمات الرئيسية لأتمتة المهام باستخدام النصوص البرمجية الخاصة بك؟