PowerCLI بواسطة VMWare أصبح واجهة شائعة لمسؤولي الافتراضيات القائمة على المضيف الهامشي للأجهزة المدعومة بنظام ESXi. تعلم كيفية إدارة VMware عبر PowerShell و PowerCLI هو إضافة قوية لأدواتك. في هذا البرنامج التعليمي لـ PowerCLI ، ستتعلم كيفية القيام بذلك.
في هذا البرنامج التعليمي ، ستتعلم:
- أساسيات الاتصال ببنية التحتية لـ VMware باستخدام PowerCLI
- التعرف على cmdlets للعمل مع كائنات VMware
- إكتساب المعرفة لاستكشاف
- إدارة VMware بشكل أفضل عبر PowerCLI
لنبدأ!
ما تحتاج إلى أن تملكه وتعرفه
قبل أن تتقدم بشكل كبير في هذا البرنامج التعليمي لـ PowerCLI ، من المهم دائمًا التأكد من أنك وأنا على نفس الصفحة. في هذه المقالة ، سأفترض أن:
- لديك خبرة أساسية في PowerShell. ليس عليك أن تكون خبيرًا في PowerShell ، ولكن أي معرفة تمتلكها في PowerShell ستكون مفيدة لك.
- لديك مضيف VMware ESXi أو جهاز vCenter للاتصال والاختبار
- أنت تعمل على جهاز كمبيوتر يعمل بنظام Windows (أو Mac / Linux)
- لديك بالفعل PowerCLI مثبت ومتصل. إذا لم يكن الأمر كذلك ، فتحقق من هذه المقالة لتثبيت PowerCLI.
I’ll be using PowerCLI v 11.4.0. I will be working from a Windows 10 workstation with Windows PowerShell 5.1, but you’re welcome to use PowerShell 6 instead as there’s feature parity for this tutorial.
اجمع معلومات حول مضيفي ESXi باستخدام PowerCLI
قبل أن تقوم بالانغماس في الطبقة الافتراضية لبيئة vSphere لدينا، فمن الجيد أن تستعرض الطبقة الأجهزة المادية. يوفر VMware PowerCLI أمرًا مباشرًا لهذا الغرض، لجمع معلومات مفصلة تسمى Get-VMHost
.
أثناء الاتصال بخادم vCenter الخاص بك أو مضيف ESXi، قم بتشغيل الأمر التالي.

نظرًا لأنني متصل بجهاز vCenter Server Appliance الذي يدير مضيفي ESXi الفرديين، يتم توفير بعض المعلومات الأساسية حول المضيفين المُدارين. يسمح لك أمر Get-VMHost
بمراجعة قدرات الأجهزة الخاصة بمضيفات الافتراضية. ومع ذلك، بشكل افتراضي، لا يعيد Get-VMHost
كل المعلومات التي يمكنه.
إذا قمت بتوجيه أمر Get-VMHost
إلى Format-List
، ستحصل على نتائج النص في وحدة التحكم لجميع المعلومات حول المضيفات المعطاة.

Get-VMHost | Format-List
بدلاً من ذلك، يمكنك أن تكون انتقائيًا وتحدد فقط الخصائص الفردية على كائن VMHost الذي تعمل عليه مثل:
استخدام هذه النتائج الأكثر تفصيلاً ستوفر لك رؤية أكبر للأجهزة الأساسية التي تشغل أعباء العمل الافتراضية الخاصة بك. بعض المعلومات، على وجه الخصوص، ستكون:
- معلومات التحقق من صحة الترخيص
- مجموعات المعالج / الذاكرة
- موديل بائع الأجهزة
- اسم المضيف DNS
بعد المراجعة، يمكن تجميع هذا في ملف CSV ربما باستخدام الأمر Export-CSV
.
فحص الأجهزة الافتراضية باستخدام PowerCLI
لنقف الآن على موضوع آخر في هذا البرنامج التعليمي حول PowerCLI من خلال مراجعة المضيفين الافتراضيين ومراجعة الآلات الافتراضية الموجودة حاليًا على مضيف ESXi معين.
الأمر Get-VM
هو أمر مفيد يمكنك استخدامه لمراجعة معلومات الآلة الافتراضية.
سيكون مخرج هذا الأمر مشابهًا للمثال أدناه:

المخرج أعلاه يوفر قائمة حالة كاملة للآلات الافتراضية الجارية حاليًا على المضيف المحدد. إذا قمت باختيار عدم تحديد مضيف فردي، كما فعلت أعلاه، ستتلقى جدولًا يحتوي على معلومات لكل مضيف تالي والآلات الافتراضية الموجودة على كل منهما.
إذا كنت تواجه مشكلة في استكشاف مشكلة وتحتاج إلى معرفة عدد الآلات الافتراضية على المضيف المحدد أو إذا كان لديك حاجة لاستخدام VMware PowerCLI لجمع معلومات مضيف ESXi، يمكنك استخدام هذه الأوامر في المستقبل. إن وظيفة التقارير التي تتوفر لديك الآن باتت تتوسع!
تفحص الشبكات الافتراضية باستخدام PowerCLI
بالنسبة لأولئك الذين يتولون تكوين أو إدارة الشبكات الافتراضية لعنقودة vCenter، هناك مجموعة كاملة من أوامر الشبكات لأي حالة استخدام. إذا كنت ترغب في رؤية الشبكات الافتراضية المكونة في بيئة vSphere الخاصة بك، فستستخدم ما يلي:
اعتمادًا على عدد الشبكات الافتراضية والمفاتيح الافتراضية التي تمتلكها، قد يكون لديك قائمة كبيرة جدًا. في حالتي، كما ترى أدناه، لدي مفتاح واحد DSwitch والذي هو مفتاح افتراضي موزع.
في تطبيق Enterprise vSphere حيث توجد العديد من مضيفي ESXi في عنقود، تبسيط المفاتيح الافتراضية يبسط نشر المفاتيح الافتراضية ومجموعات المنافذ عبر العديد من المضيفين بنفس التكوين. يوفر هذا توفيرًا في العمل اليدوي لإنشاء تكوينات الشبكة المتطابقة على كل مضيف يدويًا، وهو طريقة رائعة لتوسيع العنقود الخاص بك!

العثور على الأجهزة الافتراضية المتصلة بشبكة افتراضية باستخدام PowerCLI
عند محاولة تحديد نطاق مشكلة معينة، قد تتساءل عن الأجهزة الافتراضية المتصلة بالشبكات الافتراضية. لمعرفة ذلك، يمكنك استخدام الأمر Get-VirtualPortGroup
. لنتعرف على هذا الأمر في هذا البرنامج التعليمي لـ PowerCLI.
A port group is essentially a virtual network. To display all port groups, run Get-VirtualPortGroup
without any parameters. You should then see a listing of all virtual port groups present in your vSphere environment.

للعثور على جميع الأجهزة الافتراضية داخل تلك المجموعة المنافذ (DPortGroup في حالتي)، يمكنك تشغيل النص التالي. تأكد من استبدال القيمة DPortGroup بالاسم الخاص بمجموعة المنافذ الافتراضية الخاصة بك.
في هذا السطر الواحد، نحن نحصل على قائمة بجميع الأجهزة الافتراضية الموجودة في جهاز vCenter هذا، ثم نقوم بتصفية النتائج باستخدام أمر Where-Object
للحصول فقط على تلك الأجهزة الافتراضية التي لديها اسم الشبكة المتطابق مع مجموعة المنافذ الخاصة بنا.

بهذه النتيجة، ستتمكن من تحديد الأجهزة المتصلة والمكونة لكل شبكة.
عندما يُطلب منك تحديد وتحليل الأجهزة الافتراضية المتصلة بشبكة معينة في VMware، ستكون الآن قادرًا على توفير حل PowerCLI لهذا السؤال.
الحصول على معلومات إصدار نظام التشغيل على الأجهزة الافتراضية الخاصة بك باستخدام PowerCLI
يتم إجراء معظم الأعمال الإدارية داخل VMware على مستوى آلة الظاهرية. من المحتمل أن تتلقى العديد من الطلبات لمهام مثل استرداد قائمة بأحجام جميع محركات الأقراص الثابتة على آلات الظاهرية أو الحصول على إصدارات نظام التشغيل الضيف لجميع الخوادم الخاصة بك بين أمور أخرى.
هذه المهام متعبة عندما تتوسع القدرة على التطبيق. يمكن لـ PowerCLI تبسيط هذه المهام باستخدام بعض أوامر الطاقة المهمة لإضافتها إلى أدواتك ، لذا دعنا نغطيها في هذا البرنامج التعليمي PowerCLI.
ربما تكون قد طُلب منك في وقت ما أن تسأل “كم عدد خوادم Ubuntu لدينا في عنقود VMware؟”. قد تكون قد قضيت وقتًا طويلاً جدًا في النقر حول vCenter بحثًا عن إجابة. يمكن لـ PowerCLI تبسيط هذه العملية بالنظر إلى كائنات VM في vCenter وتطبيق بعض السحر PowerShell على النتيجة.
انظر إلى البرنامج النصي التالي الذي يجمع معلومات VM معًا. يستخدم هذا المقتطف الأمر Get-View
الذي سنتحدث عنه قليلاً في وقت لاحق ولكن في الوقت الحالي ، يجب أن تعلم أنه طريقة متقدمة لاسترداد خصائص كائن VMware. في هذه الحالة ، نقوم بجمع الخصائص المتداخلة التي يتم استردادها بسهولة أكبر بهذه الطريقة.
الكود أعلاه يسترد قائمة الآلات الظاهرية عبر الأمر Get-VM
في PowerCLI ، ثم يقوم بفرز هذه القائمة باستخدام الأمر Sort-Object
في PowerShell ، ثم يسترد بعض خصائص الكائن باستخدام الأمر Get-View
في PowerCLI.
عند تشغيل هذا في بيئتي ، يعطي النتيجة أدناه. يمكنك رؤية اسم VM في vCenter ، و Configured OS
وهو كيفية تعيين الأجهزة الظاهرية لـ VMware لتفسير نظام التشغيل الضيف ، والـ Running OS
الذي يمثل النظام الأساسي الفعلي.

مع VMs replicant و Scriptrunner المتوقفة في العنقود، لن تتمكن من رؤية قيمة “Running OS” لهما. يتم جمع نظام التشغيل بواسطة خدمة VMware Tools. إذا لم تكن متاحة، فإن PowerCLI لا يمكنه جلب معلومات نظام التشغيل.
إنشاء تقارير CSV باستخدام PowerCLI
تعد VMware Tools خدمة داخلية للضيف لكل من نظامي التشغيل Windows و Linux التي توفر معلومات إضافية للمضيف وإمكانيات إدارية. في معظم الحالات، ستوفر هذه المعلومات إغلاقًا نظيفًا، ومعلومات نظام التشغيل، وعرضًا لوحة التحكم ذات دقة أعلى للVMs.
A convenient way to report on and provide this information would be to pipe the above script into the Export-CSV
cmdlet. Export-Csv
will create a CSV file with the same information you see in the console.
بعد تشغيل الشفرة أعلاه، يجب أن تكون قادرًا على فتح ملف CSV بواسطة Excel لمراجعة التقرير.

فحص أقراص الصلب الافتراضية باستخدام PowerCLI
الأمر “Get-Harddisk” هو أمر آخر مفيد للمعرفة. يسمح لك cmdlet “Get-HardDisk” بتفحص معلومات حول أقراص الصلب الافتراضية المرتبطة بـ VMs.
على سبيل المثال، للاستعلام عن معلومات حول القرص الصلب الافتراضي المرتبط بـ VM exchange1، يمكنك تشغيل الأمر التالي:

قد تكون بعض هذه المعلومات متكررة، مثل السعة بالكيلوبايت مقابل الغيغابايت. ولكن هناك قيمة في معرفة “StorageFormat” (أنواع الاحتياط التحفظية/الثخانة). والمعرفة بأسماء ملفات VMDK.
على سبيل المثال، إذا رأيت مشكلة مشتركة وتتواجد جميع أقراص صلبة للـ VMs على نفس حجم مخزن البيانات، فقد يسرع هذا المعرفة من عملية إصلاح الأخطاء.
فحص محولات الشبكة الافتراضية باستخدام PowerCLI
بالإضافة إلى مراجعة معلومات القرص الصلب للأجهزة الافتراضية الخاصة بك، قد ترغب أيضًا في التحقق من محولات الشبكة الافتراضية. للتحقق من هذه الخصائص لجهاز افتراضي واحد، يمكنك استخدام cmdlet Get-NetworkAdapter
.
بينما كنت قد بحثت في وقت سابق في هذا المنفذ عن جميع الأجهزة الافتراضية الموجودة في نفس الشبكة، هذه المرة تريد فقط رؤية المحولات المتصلة بجهاز افتراضي معين.

هذا مفيد إذا كانت هناك مشكلة في تصحيح الأجهزة الافتراضية التي تحتوي على محولات شبكة متعددة. يمكنك بسرعة وبنظرة واحدة تحديد ما إذا كانت تلك المحولات متصلة بالشبكات المناسبة.
تشغيل نصوص PowerShell في أجهزة افتراضية باستخدام Invoke-VMScript
باستخدام cmdlet Invoke-VMScript
، يمكنك أيضًا تشغيل الأوامر المباشرة PowerShell داخل الجهاز الافتراضي؛ دون الحاجة إلى اتصال بالشبكة. إذا كنت قد استخدمت PowerShell Direct في بيئة Hyper-V من قبل، فهذه ستكون تجربة مشابهة.
بدلاً من إنشاء جلسة بعيدة PowerShell أو استخدام cmdlet Invoke-Command
عبر الشبكة، يمكن لـ cmdlet Invoke-VMScript
إرسال الأوامر مباشرة إلى الجهاز الافتراضي بدون الحاجة إلى اتصال WinRM أو SSH عادي.
على سبيل المثال، ربما ترغب في إجراء قائمة بسيطة للمجلد في جهاز افتراضي يسمى exchange1. للقيام بذلك، يمكنك تمرير dir C:\
كقيمة لمعلمة ScriptText
كما هو موضح أدناه.
النتائج كما لو كان قد تم تشغيل الأوامر من واجهة تحكم VM نفسها. يعيد Invoke-VMScript
جميع الناتج الذي تم تشغيله على VM.

على الرغم من أن هذا مثال أساسي ، إلا أنه يمكنك أن تصبح أكثر تعقيدًا ما تريد. تتيح لك هذه الأمر في PowerCLI تحديد أنواع الدفعات أو PowerShell أو Bash ضمن معلمة ScriptText
.
يمكنك أيضًا أن تصبح أكثر تقدمًا. في الأسفل يمكنك أن ترى كيفية استخدام Invoke-VMScript
لتشغيل كود PowerShell باستخدام متغير $script
منفصل لمدخل معلمة ScriptText
. يتيح لنا ذلك إنشاء إدخال نص مخصص أكثر للنص لمعالجته بواسطة VM.
قيمة معلمة ScriptText
يجب أن تكون سلسلة. لهذا السبب ، يحتوي المتغير $script
على علامات تنصيص خارجية واحدة كضرورة.
قد لاحظت أيضًا استخدام معلمة GuestCredential
. تُستخدم هذه المعلمة للمصادقة على نظام تشغيل VM. تعد هذه المعلمة مفيدة بشكل خاص إذا كنت ترغب في تشغيل النص كحساب مختلف.
يجب أن يؤدي سكريبتك المطبق إلى نتيجة مشابهة لما يلي.

يوفر نتيجة هذا السكريبت لنا معلومات حول قرص VM. بناءً على ذلك ، يجب أن تعرف أنها VM عن بُعد بسبب VMware Virtual Disk
كاسم القرص المفضل.
التقدم مع الحصول على Get-View
قد تكون رأيت بعض الأوامر الأساسية تُرجِع خاصية تسمى ExtensionData
. يمكنك العثور على هذه الخاصية عن طريق استخدام أوامر PowerCLI وتوجيهها إلى الأمر Get-Member
في PowerShell. إذا كنت تتساءل عن معنى ذلك، فإليك الفرصة لمعرفة المزيد.
الخطوة التالية في هذه المغامرة هي فهم الأمر Get-View
. يستخدم PowerCLI لـ VMware العديد من الاستعلامات المختلفة لجهاز الظاهري لتوفير نتائج جميلة وبسيطة باستخدام الأمر Get-VM
. ولكن هناك الكثير تحت الغطاء يمكن الوصول إليه فقط باستخدام الأمر Get-View
.
من المحتمل أن ترى الكثير من النصوص التي تستخدم هذا الأمر. فمن الجيد أن تقضي بعض الوقت في التعود على رؤية هذا الأمر في العمل. لتأخذ فكرة عنه، استخدم أمر Get-View
للحصول على معلومات عن الجهاز الظاهري (exchange1 في هذا المثال).
يمكنك رؤية خيارات التصفية في هذا الأمر تتطلب استخدام جدول هاشتابل في PowerShell وليس قيم سلسلة فردية. كن حذرًا عند بناء النصوص الفريدة الخاصة بك!
نتيجة الأمر أعلاه هي معلومات تكوين متداخلة كثيرة وخيارات طرق لاتخاذ إجراءات ضد الجهاز الظاهري أو الحصول على خصائص الكائن.

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

ربما ترغب في تحديد خاصية واحدة فقط. إذا كان الأمر كذلك، فيمكنك تشغيل ما يلي لتحديد قيمة فردية.
هناك العديد من الخيارات Get-View
لجميع أنواع كائنات VMware. لا تتردد في استكشاف جميع هذه الخيارات ومراجعة هذا المقال المفيد من VMware الذي يعمق في هذا الأمر القوي!
قم بتعلم التعامل مع الكود في VMware Code Capture
إذا كنت ترغب في الاستفادة من PowerCLI ولكنك لا ترغب في بناء الكود عن طريق الكتابة، فإن Code Capture في vCenter هنا لمساعدتك. يعد Code Capture أداة تطوير جديدة تعمل بنفس طريقة مركز إدارة Active Directory. دعنا نغطي Code Capture في هذا البرنامج التعليمي لـ PowerCLI.
تسجل هذه الأداة جميع الإجراءات التي تقوم بها في واجهة المستخدم الرسومية. ثم تقوم بتحويل كل تلك الإجراءات وتوفيرها لك في نصوص PowerCLI.
بشكل افتراضي، لا يتم تشغيل Code Capture. لتشغيله، افتح جهاز vCenter الخاص بك وانتقل إلى القائمة -> مركز المطور كما هو موضح أدناه.

بمجرد الوصول إلى علامة مركز المطور، قم بتبديل خيار تمكين Code Capture.

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

سيظهر زر التسجيل الأحمر بجوار قسم المستخدم الذي تم تسجيل الدخول به في vCenter بحيث يمكنك الآن التسجيل في أي وقت.
لتوضيح طريقة استخدام Code Capture ، اتبع معالم خيارات معالم إنشاء آلة افتراضية جديدة.
- انقر على زر تسجيل لبدء التسجيل. سيتسبب ذلك في بدء وميض الزر الأحمر تسجيل.
- انقر بزر الماوس الأيمن على مضيف VMware الخاص بك وأنشئ آلة افتراضية جديدة. استمر في اتباع المعالم لإنشاء آلة افتراضية جديدة باستخدام جميع القيم الافتراضية.
- بمجرد إنشاء الآلة الافتراضية ، انقر على زر التسجيل وأوقف التسجيل.
قد يكون الإخراج الناتج أكثر تفصيلاً قليلاً مما كان متوقعًا. يتضمن الإخراج حتى جميع إجراءات تصفح واجهة المستخدم قبل إنشاء الآلة الافتراضية. ولكن يجب أن ترى قسمًا مشار إليه في التعليقات بدايةً بـ CreateVM_Task
. هنا حيث يبدأ الكود في إنشاء آلة افتراضية.
أدناه جزء من الإخراج الخاص بـ CreateVM_Task خلال عملية معالم معالج إنشاء VM جديدة في واجهة المستخدم عن طريق Code Capture:

قد يكون هذا الإخراج مربكًا قليلاً ، ولكنه يعرض لك مباشرة عدد خيارات التكوين المتاحة لآلاتك الافتراضية. اعتمادًا على احتياجاتك الخاصة ، يمكنك الآن تعديل نصوصك الخاصة وتخصيصها حسب رغبتك.
لا يقتصر استخدام أداة Code Capture على إنشاء الآلات الافتراضية فحسب. يمكنها أيضًا بناء الشفرة لتغييرات الشبكة ، أو تعديلات صغيرة على الآلات الافتراضية ، أو تغييرات تكوين المضيف. من خلال القدرة على مراجعة الإخراج الخاص بـ PowerCLI لإجراءات واجهة المستخدم ، يمكنك اختصار رحلتك نحو نشر البنية التحتية كشفرة.
ملخص درس PowerCLI.
في هذه المقالة، تناولت الكثير من المعلومات. عمل جيد! آمل أن تكون قد أدركت القوة التي يوفرها PowerCLI في إدارة بنية تحتية VMware.
هناك العديد من الأوامر في PowerCLI لمجموعة واسعة من المنتجات، لكننا لم نغطي سوى بعضها هنا. تأكد من متابعة هذه المدونة للمزيد من المقالات حول هذه الأداة المذهلة!