الإعلانات

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

يمكنك تأطير الأوامر الموجودة التي تستخدمها كل يوم داخل حلقات لتوفير الوقت والجهد. تقوم النصوص البرمجية الخاصة بك بالتحميل الثقيل أثناء قيامك بالعمل المهم لقراءة المزيد من المقالات على MakeUseOf!

حلقات Powershell ForEach: باب التعامل مع البيانات المتقدمة

ForEach هو الاسم المستعار لكائن ForEach. (الاسم المستعار هو مجرد اختصار لأمر في PowerShell.) هذا هو الوقت المناسب للحديث عن طريقة تعامل PowerShell مع البيانات.

مثل معظم لغات البرمجة الحديثة ، PowerShell موجه للكائنات من أين حصلت البرمجة "كائنية التوجه" على اسمها؟إن Object Oriented ليس مجرد كلمة طنين عشوائية تسمعها في دوائر البرمجة. هناك سبب وراء الاسم - ولكن ماذا؟ انضم إلي بينما أستكشف بعض أساسيات مفاهيم البرمجة واشرح ... اقرأ أكثر

instagram viewer
. كل شيء في PowerShell هو كائن ، مما يعني أنه حتى المتغيرات لها خصائص ووظائف موسعة Powershell Cmdlets التي ستحسن مهاراتك في إدارة WindowsPowershell هي أداة سطر أوامر متساوية ولغة برمجة نصية. يمنحك القدرة على أتمتة جهاز الكمبيوتر الخاص بك عبر نفس الأوامر التي تستخدمها لإدارته. اقرأ أكثر . هذه الخاصية هي السبب في أنه يمكنك تعيين عمليات البحث على متغير ، وينتهي الأمر بمصفوفة من النتائج.

$ yourVar = Get-ChildItem * foreach ($ file in $ yourVar) {خطواتك. }

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

في PowerShell ، يمكنك التنقل عبر الصفيف وتنفيذ الإجراء على كل واحد باستخدام ForEach. وهذا يوفر لك عدة أسطر من التعليمات البرمجية ، وهو أمر مفيد إذا كان لديك نص برمجي أطول. على سبيل المثال ، ما يلي هو نص صغير يستخدم زوجًا من حلقات Powershell ForEach. يقوم بإنشاء أرشيف ZIP لجميع ملفاتك التي لم تفتحها منذ 30 يومًا.

بناء نظام أرشيف الملفات باستخدام حلقات ForEach

دعونا كسر الخطوات. انت تستخدم Get-ChildItem للحصول على جميع الملفات في مجلد "المستندات". متغير البيئة ما هي متغيرات البيئة وكيف يمكنني استخدامها؟ [شبابيك]بين الحين والآخر سوف أتعلم تلميحًا صغيرًا يجعلني أفكر "جيدًا ، إذا عرفت أنه قبل عام ، كان سيوفر لي ساعات من الوقت". أتذكر بوضوح تعلم كيفية ... اقرأ أكثر env $: USERPROFILE يقوم بتشغيل البرنامج النصي باستخدام ملف التعريف الحالي. هذا المتغير أكثر قابلية للنقل من مسار مشفر. يتم تعيين نتائج هذا البحث إلى المتغير $ MyDocs. نقوم بعد ذلك بإنشاء حلقة ForEach من خلال جعلها تتقدم عبر كل منها $ Doc في $ MyDocs.

$ oldDocs = @ () MyDocs $ = Get-ChildItem -Path "$ ($ env: USERPROFILE) \ Documents" -Recurse. foreach ($ doc في $ MyDocs) {if ($ doc. LastAccessTime -lt $ (Get-Date) .addDays (-30)) {$ oldDocs + = $ doc} } $ ArchiveFolder = New-Item -Path "$ ($ env: USERPROFILE) \ Documents \ $ ((Get-Date -Format MMddyy) .toString ())" -ItemType Directory. foreach ($ doc في $ oldDocs) {Move-Item -Path $ doc. FullName - الوجهة "$ ($ ArchiveFolder. FullName) \ $ ($ doc. الاسم) "-تأكيد $ false. } $ source = $ ArchiveFolder. الاسم بالكامل. $ destination = "$ ($ env: USERPROFILE) \ Documents \ $ ($ ArchiveFolder. الاسم) .zip " الوظيفة الإضافية -AssemblyName "system.io.compression.filesystem" [io.compression.zipfile]:: CreateFromDirectory ($ source، $ الوجهة) if (مسار الاختبار $ الوجهة) {Remove-Item -Path $ ArchiveFolder -Recurse -Confirm $ false. }

داخل الحلقة ، نتحقق لمعرفة ما إذا كان كل ملف LastAccessTime الملكية أقدم من 30 يومًا. نحصل على هذا مع احصل على التاريخ cmdlet ، واستخدام AddDays تعمل مع سلبي الثلاثين. إذا كان الأمر كذلك ، فإننا نضيف الملف إلى $ myOldDocs مجموعة مصفوفة. بعد اكتمال فرز الملف ، نأخذ صفيفنا المكتمل وننشئ ملفًا مضغوطًا. هذه العملية أكثر تعقيدًا بعض الشيء لأنها تنطوي على استدعاء القليل من .NET. لا تقلق إذا لم تفهمها تمامًا - يمكنك سرقة الرمز منها وثيقة مساعدة TechNet هذه.

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

بينما ويفعل بينما: حلقات على الشرط

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

ط = 0. بينما (i ​​<10) {Your Steps i + = 1. }

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

افعل {خطواتك. } في حين (بيان شرطي)

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

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

إعادة التشغيل والتحقق: استخدام حلقة Do-While

هذا البرنامج النصي أبسط قليلاً. أولا ، أنت تستخدم إعادة تشغيل الكمبيوتر أمر إعادة تشغيل الجهاز البعيد. (استخدمنا عنوان IP وهمي هنا لأوامر إعادة التشغيل ، تأكد من استبداله بـ DNS / IP للكمبيوتر الخاص بك). ثم قم بإنشاء متغير العداد ، أنا وتعيينه على 0. بعد ذلك ، لديك حلقة Do مع Start-Sleep لإيقاف البرنامج النصي لمدة 300 ثانية (خمس دقائق). يضيف الأمر الثاني واحدًا إلى العداد.

إعادة تشغيل الكمبيوتر-اسم الكمبيوتر 127.0.0.1. ط = 0. افعل {Start-Sleep -Seconds 300 $ i + = 1. } بينما ((! (Test-Connection 127.0.0.1 -Quiet)) -or $ i -gt 3) إذا ($ i -gt 3) {Write-Ouput "Remote Machine لا يستجيب ، يرجى التحقق." } آخر {إخراج الكتابة "إعادة التشغيل نجحت" }

ثم لدينا معايير while الخاصة بنا. نستخدم اختبار Or للتأكد من أن الفشل يولد تنبيهًا. البديل هو تكرار البرنامج النصي إلى ما لا نهاية في انتظار الجهاز البعيد. للتحقق من الجهاز ، نستخدم اختبار الاتصال cmdlet. من أجل البساطة ، هذا هو Ping for PowerShell. نضيف المعلمة -هادئ مما يجبرها على إرجاع True أو False بدلاً من نتائج الحزم. الجزء الثاني من العبارة Or يتحقق مما إذا كان العداد أكثر من ثلاثة.

بمجرد اكتمال الحلقة ، نريد إنشاء الإخراج. هذا يعني أننا بحاجة إلى فحص عدادنا. هذه عبارة if / else سريعة. إذا كان أكبر من ثلاثة ، فسينتج البرنامج النصي أن الجهاز البعيد لا يستجيب. إذا لم يكن الأمر كذلك ، فإنه ينتج أن إعادة التشغيل كانت ناجحة.

حلقات أخرى

هناك نوعان آخران من الحلقات متوفرة في PowerShell. ترتبط إلى حد ما بالحلقتين السابقتين ، فهي ليست شائعة الاستخدام. تعمل حلقة For بشكل مشابه لمثال while. قمت بتعيين كافة المعايير الخاصة بك في التقييم ، ثم قم بتعيين أوامر cmdlets الخاصة بك.

for ($ i = 0؛ $ i -lt 10؛ $ i ++) {خطواتك. }

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

حلقات powershell foreach

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

الاستمرار في النمو معك

عند هذه النقطة ، لديك معظم المهارات لبدء بناء نصوص قوية. سواء أتمتة منصة منزلك 15 مهمة متقدمة يمكن لـ PowerShell التعامل معها في Windows 10يشبه PowerShell موجه الأوامر ، ولكنه أفضل. إنها أداة إدارة نظام قوية. لقد قمنا بتجميع 15 مهمة ، بعضها بسيط وبعضها معقد ، والتي تستفيد من سحر PowerShell. اقرأ أكثر أو توفير الوقت في العمل ، تساعد الحلقات البرامج النصية الخاصة بك على القيام بالمزيد. دمج هذه الحلقات مع معالجة الأخطاء تحرك البرمجة النصية الخاصة بك خارج الأساسيات التعامل مع أخطاء PowerShell مثل رئيسه مع هذه النصائحمعالجة خطأ PowerShell تتكون من أربعة أجزاء. تعرف على كيفية إصلاح الأخطاء في Microsoft PowerShell والمزيد. اقرأ أكثر . هذا يفتح الباب لمزيد من اللغات المتقدمة.

ما هو برنامج PowerShell النصي الذكي الذي أنشأته باستخدام الحلقات؟ تشاركه معنا في التعليقات.

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