مدرسة المهوس كتابة أول سيناريو PowerShell الكامل الخاص بك
قبل بضعة أسابيع ، أظهر لك The Geek كيف يمكنك استخدام موجه الأوامر للعثور على وقت بدء تشغيل جهاز الكمبيوتر الخاص بك. في هذا التثبيت الأخير لمدرسة Geek School for PowerShell ، سنقوم بكتابة أمر PowerShell قابل لإعادة الاستخدام للقيام بنفس الشيء.
تأكد من قراءة المقالات السابقة في السلسلة:
- تعلم كيفية أتمتة ويندوز مع PowerShell
- تعلم استخدام Cmdlets في PowerShell
- تعلم كيفية استخدام الكائنات في PowerShell
- تعلم تنسيق وتصفية ومقارنة في PowerShell
- تعلم كيفية استخدام الاتصال عن بعد في PowerShell
- استخدام PowerShell للحصول على معلومات الكمبيوتر
- العمل مع مجموعات في PowerShell
- تعلم كيفية استخدام وظائف في PowerShell
- تعلم كيفية تمديد PowerShell
- تعلم PowerShell المتغيرات ، المدخلات والمخرجات
كتابة السيناريو الأول الخاص بك
أول شيء يتعين علينا القيام به هو إيجاد طريقة للوصول إلى المعلومات التي نبحث عنها. بما أننا نتعامل مع معلومات الإدارة ، فقد نحتاج على الأرجح إلى إلقاء نظرة على استخدام WMI ، والتي لديها بالفعل فئة تسمى Win32_OperatingSystem والتي تسمح لك بعرض معلومات مطولة عن نظام التشغيل الخاص بك ، بما في ذلك آخر مرة بدأت فيها..
حتى الآن نعلم أين يمكننا العثور على المعلومات التي نبحث عنها ، وفتح ISE واكتب ما يلي.
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
تحديد كائن -Property CSName ، LastBootUpTime
ملاحظة: اضطررت إلى تقسيم شفرتي على سطرين بحيث يتم احتواؤها في لقطة الشاشة ، ولكن لا تتردد في كتابتها على سطر واحد. إذا اخترت تقسيمها على سطرين ، فالرجاء التأكد من أن حرف الأنبوب هو الحرف الأخير في السطر 1.
الآن انقر فوق الزر "تشغيل Script" الأخضر أو اضغط المفتاح F5 على لوحة المفاتيح لاختبار التعليمات البرمجية.
يمكن أن تكون أوقات WMI غامضاً قليلاً. نقصد بذلك إذا نظرت إلى خاصية LastBootUpTime ، تقول 2013-03-19 في 18:26:21 ، لكن لسبب ما قرر رجال WMI أن يسلسلوا كل ذلك في سلسلة واحدة. لحسن الحظ بالنسبة لنا ، لا داعي للقلق بشأن تحليل السلسلة يدويًا نظرًا لوجود طريقة أسهل للقيام بذلك ، وإن كان ذلك أكثر تقدمًا. ستحتاج إلى تغيير جزء "تحديد كائن" من التعليمات البرمجية لتبدو مثل هذا:
Select-Object -Property CSName، @ n = ”Last Booted“؛
ه = [Management.ManagementDateTimeConverter] :: ToDateTime ($ _. LastBootUpTime)
ما نقوم به هنا هو إنشاء خاصية مخصصة تسمى "آخر تمهيد" وتحديد أن القيمة الخاصة به يجب أن تكون نتيجة استدعاء الأسلوب الثابت ToDateTime على الخاصية LastBootUpTime لكائن خطوط الأنابيب الحالي. يجب أن تبدو شفرتك الآن هكذا.
سيؤدي تشغيل الكود الآن إلى وقت إقلاع آخر أكثر قابلية للقراءة.
الآن ، وبعد أن أصبحنا سعداء بالوظيفة الأساسية للنصيحة ، نحتاج إلى حفظها. من أجل البساطة ، لنقم بحفظه على النحو التالي:
C: \ GET-LastBootTime.ps1
الآن انتقل إلى النصف السفلي من ISE وقم بتشغيل التالي:
C: \ GET-LastBootTime.ps1
عظيم! يعمل النص البرمجي لدينا كما هو متوقع ، ولكن لا تزال هناك مشكلة واحدة في النص البرمجي لدينا. قمنا بحصر اسم الكمبيوتر الذي نريد الحصول عليه في وقت التمهيد الأخير. بدلاً من قيم hardcode ، يجب علينا بدلاً من ذلك توفير معلمة بحيث يمكن لأي شخص يستخدم البرنامج النصي اختيار أي جهاز كمبيوتر يعمل عليه البرنامج النصي. للقيام بذلك ، انتقل إلى الجزء العلوي من البرنامج النصي الخاص بك وقم بما يلي.
المعلمة (
[سلسلة] $ الكمبيوتر
)
ثم استبدال قيمة localhost hardcoded بمتغير $ ComputerName. يجب أن يبدو النص البرمجي الآن مثل هذا:
احفظ النص البرمجي ، ثم ارجع إلى النصف السفلي من ISE واعرض المساعدة على النص البرمجي.
مساعدة C: \ Get-LastBootTime.ps1
رائع ، حتى الآن يمكننا تحديد اسم الكمبيوتر الذي نرغب في الحصول عليه في وقت التمهيد الأخير لاستخدام معلمة ComputerName الجديدة الخاصة بنا. لسوء الحظ ، لا تزال هناك بعض الأخطاء خاطئة. أولاً ، المعلمة ComputerName اختيارية وثانياً ، هذا هو أبشع المساعدة التي رأيتها ، لذا دعنا نصلح هذه المشكلات بسرعة. لجعل معلمة ComputerName إلزامية ، قم بتغيير محتويات كتلة المعلمة إلى ما يلي.
[معلمة (إلزامي = $ صحيح)] [سلسلة] $ الكمبيوتر
أما بالنسبة إلى إنشاء ملف مساعدة أفضل ، فإن الطريقة الأكثر شيوعًا هي استخدام المساعدة المستندة إلى التعليقات. هذا يعني أننا فقط نضيف تعليقًا طويلاً إلى الجزء العلوي من النص البرمجي.
<#
.موجز
يظهر عندما بدأ جهاز الكمبيوتر الخاص بك.
.وصف
هذه وظيفة مجمّع WMI للحصول على الوقت الذي بدأ فيه جهاز الكمبيوتر الخاص بك آخر مرة.
.PARAMETER ComputerName
اسم الكمبيوتر الذي تريد تشغيل الأمر ضده.
.مثال
Get-LastBootTime -ComputerName localhost
.حلقة الوصل
www.howtogeek.com
#>
بمجرد الانتهاء من كل شيء ، يجب أن ينتهي بك الأمر مع نص برمجي يشبه هذا.
دعنا نذهب الآن ونتحقق من ملف المساعدة الجديد.
آه ، تبدو رائعة! والآن بعد اكتمال برنامجنا النصي ، لدينا آخر شيء يجب القيام به: الاختبار. لهذا ، سأخرج من ISE وأعود إلى وحدة التحكم PowerShell فقط حتى نتمكن من التأكد من عدم وجود أي حالات شاذة.
إذا بدأت ببطانة بسيطة واحدة واستمررت في البناء عليها كما فعلنا في هذا الدليل ، فسوف تحصل على تعليق في أي وقت من الأوقات. هذا كل شيء لهذا الوقت الناس ، أراك في التثبيت القادم من مدرسة المهوس.