البرنامج التعليمي لـ PowerCLI: إدارة بنية تحتية لـ VMware

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، قم بتشغيل الأمر التالي.

PS51> Get-VMHost
Get-VMHost

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

إذا قمت بتوجيه أمر Get-VMHost إلى Format-List، ستحصل على نتائج النص في وحدة التحكم لجميع المعلومات حول المضيفات المعطاة.

Get-VMHost | Format-List

بدلاً من ذلك، يمكنك أن تكون انتقائيًا وتحدد فقط الخصائص الفردية على كائن VMHost الذي تعمل عليه مثل:

PS51> Get-VMHost | format-list -Property State,LicenseKey,Version

استخدام هذه النتائج الأكثر تفصيلاً ستوفر لك رؤية أكبر للأجهزة الأساسية التي تشغل أعباء العمل الافتراضية الخاصة بك. بعض المعلومات، على وجه الخصوص، ستكون:

  • معلومات التحقق من صحة الترخيص
  • مجموعات المعالج / الذاكرة
  • موديل بائع الأجهزة
  • اسم المضيف DNS

بعد المراجعة، يمكن تجميع هذا في ملف CSV ربما باستخدام الأمر Export-CSV.

فحص الأجهزة الافتراضية باستخدام PowerCLI

لنقف الآن على موضوع آخر في هذا البرنامج التعليمي حول PowerCLI من خلال مراجعة المضيفين الافتراضيين ومراجعة الآلات الافتراضية الموجودة حاليًا على مضيف ESXi معين.

الأمر Get-VM هو أمر مفيد يمكنك استخدامه لمراجعة معلومات الآلة الافتراضية.

PS51> Get-VMHost -Name <Host FQDN> | Get-VM

سيكون مخرج هذا الأمر مشابهًا للمثال أدناه:

PS51> Get-VMHost -Name | Get-VM

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

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

تفحص الشبكات الافتراضية باستخدام PowerCLI

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

PS51> Get-VirtualSwitch

اعتمادًا على عدد الشبكات الافتراضية والمفاتيح الافتراضية التي تمتلكها، قد يكون لديك قائمة كبيرة جدًا. في حالتي، كما ترى أدناه، لدي مفتاح واحد DSwitch والذي هو مفتاح افتراضي موزع.

في تطبيق Enterprise vSphere حيث توجد العديد من مضيفي ESXi في عنقود، تبسيط المفاتيح الافتراضية يبسط نشر المفاتيح الافتراضية ومجموعات المنافذ عبر العديد من المضيفين بنفس التكوين. يوفر هذا توفيرًا في العمل اليدوي لإنشاء تكوينات الشبكة المتطابقة على كل مضيف يدويًا، وهو طريقة رائعة لتوسيع العنقود الخاص بك!

Get-VirtualSwitch

العثور على الأجهزة الافتراضية المتصلة بشبكة افتراضية باستخدام 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.

Get-VirtualPortGroup

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

PS51> Get-VM | Where-Object { ($PSItem | Get-NetworkAdapter | where {$_.networkname -match "DPortgroup"})}

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

Getting VMs with only a specific port group

بهذه النتيجة، ستتمكن من تحديد الأجهزة المتصلة والمكونة لكل شبكة.

عندما يُطلب منك تحديد وتحليل الأجهزة الافتراضية المتصلة بشبكة معينة في VMware، ستكون الآن قادرًا على توفير حل PowerCLI لهذا السؤال.

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

يتم إجراء معظم الأعمال الإدارية داخل VMware على مستوى آلة الظاهرية. من المحتمل أن تتلقى العديد من الطلبات لمهام مثل استرداد قائمة بأحجام جميع محركات الأقراص الثابتة على آلات الظاهرية أو الحصول على إصدارات نظام التشغيل الضيف لجميع الخوادم الخاصة بك بين أمور أخرى.

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

ربما تكون قد طُلب منك في وقت ما أن تسأل “كم عدد خوادم Ubuntu لدينا في عنقود VMware؟”. قد تكون قد قضيت وقتًا طويلاً جدًا في النقر حول vCenter بحثًا عن إجابة. يمكن لـ PowerCLI تبسيط هذه العملية بالنظر إلى كائنات VM في vCenter وتطبيق بعض السحر PowerShell على النتيجة.

انظر إلى البرنامج النصي التالي الذي يجمع معلومات VM معًا. يستخدم هذا المقتطف الأمر Get-View الذي سنتحدث عنه قليلاً في وقت لاحق ولكن في الوقت الحالي ، يجب أن تعلم أنه طريقة متقدمة لاسترداد خصائص كائن VMware. في هذه الحالة ، نقوم بجمع الخصائص المتداخلة التي يتم استردادها بسهولة أكبر بهذه الطريقة.

PS51> Get-VM | 
      Sort-Object -Property Name |
      Get-View -Property @("Name", "Config.GuestFullName", "Guest.GuestFullName") |
      Select-Object -Property Name, @{N="Configured OS";E={$_.Config.GuestFullName}}, @{N="Running OS";E={$_.Guest.GuestFullName}}

الكود أعلاه يسترد قائمة الآلات الظاهرية عبر الأمر Get-VM في PowerCLI ، ثم يقوم بفرز هذه القائمة باستخدام الأمر Sort-Object في PowerShell ، ثم يسترد بعض خصائص الكائن باستخدام الأمر Get-View في PowerCLI.

عند تشغيل هذا في بيئتي ، يعطي النتيجة أدناه. يمكنك رؤية اسم VM في vCenter ، و Configured OS وهو كيفية تعيين الأجهزة الظاهرية لـ VMware لتفسير نظام التشغيل الضيف ، والـ Running OS الذي يمثل النظام الأساسي الفعلي.

Finding VMs based on various criteria

مع 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.

PS51> Get-VM | Sort-Object -Property Name | Get-View -Property @("Name", "Config.GuestFullName", "Guest.GuestFullName") |
Select -Property Name, @{N="Configured OS";E={$_.Config.GuestFullName}}, @{N="Running OS";E={$_.Guest.GuestFullName}} | Export-CSV C:\report.csv -NoTypeInformation 

بعد تشغيل الشفرة أعلاه، يجب أن تكون قادرًا على فتح ملف CSV بواسطة Excel لمراجعة التقرير.

CSV file of VM information

فحص أقراص الصلب الافتراضية باستخدام PowerCLI

الأمر “Get-Harddisk” هو أمر آخر مفيد للمعرفة. يسمح لك cmdlet “Get-HardDisk” بتفحص معلومات حول أقراص الصلب الافتراضية المرتبطة بـ VMs.

على سبيل المثال، للاستعلام عن معلومات حول القرص الصلب الافتراضي المرتبط بـ VM exchange1، يمكنك تشغيل الأمر التالي:

PS51> Get-VM -Name exchange1 | Get-HardDisk | Format-List
Querying information about the virtual hard disk attached to the exchange1 VMs

قد تكون بعض هذه المعلومات متكررة، مثل السعة بالكيلوبايت مقابل الغيغابايت. ولكن هناك قيمة في معرفة “StorageFormat” (أنواع الاحتياط التحفظية/الثخانة). والمعرفة بأسماء ملفات VMDK.

على سبيل المثال، إذا رأيت مشكلة مشتركة وتتواجد جميع أقراص صلبة للـ VMs على نفس حجم مخزن البيانات، فقد يسرع هذا المعرفة من عملية إصلاح الأخطاء.

فحص محولات الشبكة الافتراضية باستخدام PowerCLI

بالإضافة إلى مراجعة معلومات القرص الصلب للأجهزة الافتراضية الخاصة بك، قد ترغب أيضًا في التحقق من محولات الشبكة الافتراضية. للتحقق من هذه الخصائص لجهاز افتراضي واحد، يمكنك استخدام cmdlet Get-NetworkAdapter.

PS51> Get-NetworkAdapter -VM myVM

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

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 كما هو موضح أدناه.

PS51> Invoke-VMScript -VM exchange1 -ScriptText "dir C:\"

النتائج كما لو كان قد تم تشغيل الأوامر من واجهة تحكم VM نفسها. يعيد Invoke-VMScript جميع الناتج الذي تم تشغيله على VM.

Invoke-VMScript

على الرغم من أن هذا مثال أساسي ، إلا أنه يمكنك أن تصبح أكثر تعقيدًا ما تريد. تتيح لك هذه الأمر في PowerCLI تحديد أنواع الدفعات أو PowerShell أو Bash ضمن معلمة ScriptText.

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

PS51> $script = 'Get-Disk'

$guestCredential = Get-Credential

Invoke-VMScript -ScriptText $script -VM VM -GuestCredential $guestCredential  -ScriptType Powershell

قيمة معلمة ScriptText يجب أن تكون سلسلة. لهذا السبب ، يحتوي المتغير $script على علامات تنصيص خارجية واحدة كضرورة.

قد لاحظت أيضًا استخدام معلمة GuestCredential. تُستخدم هذه المعلمة للمصادقة على نظام تشغيل VM. تعد هذه المعلمة مفيدة بشكل خاص إذا كنت ترغب في تشغيل النص كحساب مختلف.

يجب أن يؤدي سكريبتك المطبق إلى نتيجة مشابهة لما يلي.

Running a script on a VM with Invoke-VMScript

يوفر نتيجة هذا السكريبت لنا معلومات حول قرص VM. بناءً على ذلك ، يجب أن تعرف أنها VM عن بُعد بسبب VMware Virtual Disk كاسم القرص المفضل.

التقدم مع الحصول على Get-View

قد تكون رأيت بعض الأوامر الأساسية تُرجِع خاصية تسمى ExtensionData. يمكنك العثور على هذه الخاصية عن طريق استخدام أوامر PowerCLI وتوجيهها إلى الأمر Get-Member في PowerShell. إذا كنت تتساءل عن معنى ذلك، فإليك الفرصة لمعرفة المزيد.

الخطوة التالية في هذه المغامرة هي فهم الأمر Get-View. يستخدم PowerCLI لـ VMware العديد من الاستعلامات المختلفة لجهاز الظاهري لتوفير نتائج جميلة وبسيطة باستخدام الأمر Get-VM. ولكن هناك الكثير تحت الغطاء يمكن الوصول إليه فقط باستخدام الأمر Get-View.

من المحتمل أن ترى الكثير من النصوص التي تستخدم هذا الأمر. فمن الجيد أن تقضي بعض الوقت في التعود على رؤية هذا الأمر في العمل. لتأخذ فكرة عنه، استخدم أمر Get-View للحصول على معلومات عن الجهاز الظاهري (exchange1 في هذا المثال).

يمكنك رؤية خيارات التصفية في هذا الأمر تتطلب استخدام جدول هاشتابل في PowerShell وليس قيم سلسلة فردية. كن حذرًا عند بناء النصوص الفريدة الخاصة بك!

PS51> Get-View -ViewType VirtualMachine -Filter @{"Name" = "myVMName"}

نتيجة الأمر أعلاه هي معلومات تكوين متداخلة كثيرة وخيارات طرق لاتخاذ إجراءات ضد الجهاز الظاهري أو الحصول على خصائص الكائن.

Get-View

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

PS51> $VM = Get-View -ViewType VirtualMachine -Filter @{"Name" = "myVMName"}
PS51> $VM.Guest
Using Get-View with the Filter Parameter

ربما ترغب في تحديد خاصية واحدة فقط. إذا كان الأمر كذلك، فيمكنك تشغيل ما يلي لتحديد قيمة فردية.

PS51> $VM.Guest.GuestFullName

هناك العديد من الخيارات Get-View لجميع أنواع كائنات VMware. لا تتردد في استكشاف جميع هذه الخيارات ومراجعة هذا المقال المفيد من VMware الذي يعمق في هذا الأمر القوي!

قم بتعلم التعامل مع الكود في VMware Code Capture

إذا كنت ترغب في الاستفادة من PowerCLI ولكنك لا ترغب في بناء الكود عن طريق الكتابة، فإن Code Capture في vCenter هنا لمساعدتك. يعد Code Capture أداة تطوير جديدة تعمل بنفس طريقة مركز إدارة Active Directory. دعنا نغطي Code Capture في هذا البرنامج التعليمي لـ PowerCLI.

تسجل هذه الأداة جميع الإجراءات التي تقوم بها في واجهة المستخدم الرسومية. ثم تقوم بتحويل كل تلك الإجراءات وتوفيرها لك في نصوص PowerCLI.

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

Navigating to the Developer Center menu item in vSphere

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

Enabling code capture

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

Code capture enabled indicator

سيظهر زر التسجيل الأحمر بجوار قسم المستخدم الذي تم تسجيل الدخول به في vCenter بحيث يمكنك الآن التسجيل في أي وقت.

لتوضيح طريقة استخدام Code Capture ، اتبع معالم خيارات معالم إنشاء آلة افتراضية جديدة.

  1. انقر على زر تسجيل لبدء التسجيل. سيتسبب ذلك في بدء وميض الزر الأحمر تسجيل.
  2. انقر بزر الماوس الأيمن على مضيف VMware الخاص بك وأنشئ آلة افتراضية جديدة. استمر في اتباع المعالم لإنشاء آلة افتراضية جديدة باستخدام جميع القيم الافتراضية.
  3. بمجرد إنشاء الآلة الافتراضية ، انقر على زر التسجيل وأوقف التسجيل.

قد يكون الإخراج الناتج أكثر تفصيلاً قليلاً مما كان متوقعًا. يتضمن الإخراج حتى جميع إجراءات تصفح واجهة المستخدم قبل إنشاء الآلة الافتراضية. ولكن يجب أن ترى قسمًا مشار إليه في التعليقات بدايةً بـ CreateVM_Task. هنا حيث يبدأ الكود في إنشاء آلة افتراضية.

أدناه جزء من الإخراج الخاص بـ CreateVM_Task خلال عملية معالم معالج إنشاء VM جديدة في واجهة المستخدم عن طريق Code Capture:

Developer Center generated code

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

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

ملخص درس PowerCLI.

في هذه المقالة، تناولت الكثير من المعلومات. عمل جيد! آمل أن تكون قد أدركت القوة التي يوفرها PowerCLI في إدارة بنية تحتية VMware.

هناك العديد من الأوامر في PowerCLI لمجموعة واسعة من المنتجات، لكننا لم نغطي سوى بعضها هنا. تأكد من متابعة هذه المدونة للمزيد من المقالات حول هذه الأداة المذهلة!

قراءة إضافية

Source:
https://adamtheautomator.com/powercli-tutorial/