كلما احتجنا إلى اكتشاف أي معلومات حول جهاز كمبيوتر يعمل بنظام Windows ومكوناته، يمكننا القيام بذلك باستخدام Get-WmiObject
.
بالإضافة إلى القراءة، يمكن لـ Get-WmiObject
أيضًا تشغيل إجراءات على الأنظمة المحلية أو عن بُعد باستخدام أساليب WMI. هذه الأمر هي واحدة من عدة أوامر في PowerShell التي يمكن أن تعمل مع مستودع WMI لتسهيل إدارة العديد من الأنظمة بشكل كبير.
اكتشاف الفئات باستخدام Get-WmiObject
على أبسط وجه، يمكن لهذا الأمر الداخلي الاستعلام عن معلومات من جهاز كمبيوتر محلي. كل ما تحتاج إلى معرفته هو النطاق (ربما root\cimv2
هو الإعداد الافتراضي) وفئة WMI حيث تقع المعلومات التي تبحث عنها.
هناك الآلاف من الفئات، وربما لا تعرف بعد أي فئة ترغب في استخدامها. باستخدام Get-WmiObject
، يمكننا الاستعلام عن جميع الفئات المتاحة في النطاق. باستخدام Get-WmiObject -List
، ستتمكن من رؤية جميع الفئات في النطاق root\cimv2
. إذا كنت بحاجة إلى التحقق من الفئات في نطاق آخر، يمكنك دائمًا استخدام معلمة Namespace
جنبًا إلى جنب مع ذلك.
الحصول على خصائص WMI
بمجرد الحصول على الفئة، سيحين وقت التحقيق والتحقق من الخصائص الموجودة في تلك الفئة. ربما أود أن أرى نظام التشغيل الذي يعمل عليه الكمبيوتر. قد أكون أقوم بإنشاء تقرير وأود أن أرى ماذا يعمل عليه الجهاز البعيد. يحتوي Get-WmiObject
على معلمة ComputerName
حيث يمكنك تحديد جهاز كمبيوتر واحد أو أكثر عن بُعد بدلاً من التشغيل محليًا.
الكمبيوتر البعيد الخاص بي هو متحكم في النطاق يُسمى “DC”. سألقي نظرة على الفئة Win32_OperatingSystem
لمعرفة الخصائص الموجودة فيها.
هذه معلومات مفيدة، ولكني لا أرى اسم نظام التشغيل. مماثل للعديد من الإخراجات الأخرى في PowerShell، لا تظهر جميع الخصائص. لذلك، سيتعين علينا استخدام Select-Object
لإرجاع جميع الخصائص.
I can now see a property called Caption
that lets me know the version of Windows.
العثور على خصائص WMI
ماذا لو كنت لا تبحث عن خاصية محددة بل عن خاصية تتطابق مع قيمة معينة. على سبيل المثال، يمكننا استعلام جميع الحالات في الفئة CIM_DataFile
، ولكن ذلك سيعيد كل ملف على النظام! بدلاً من ذلك، يمكننا تصفية الحالات حسب القيمة باستخدام إما الباراميتر Filter
أو الباراميتر Query
. دعونا نتعرف على كل منهما.
باستخدام الفئة CIM_DataFile
كمثال، ربما أريد فقط العثور على الحالات التي تمثل ملفات مضغوطة. نظرًا لأن خاصية Compressed
هي خاصية في كل حالة وهي قيمة منطقية، يمكنني استخدام الباراميتر Filter
لإرسال التصفية مباشرة إلى موفر WMI مع إعادة الحالات التي لديها خاصية Compressed
بقيمة True
فقط.
إذا كنت تعرف WQL، يمكنك أيضًا تحديد الفئة وتحديد “التصفية” بنفسك من خلال صياغة استعلام WQL الخاص بك أيضًا.
استدعاء طرق WMI
Get-WmiObject
ليست فقط قادرة على قراءة المعلومات من WMI، بل يمكنها أيضًا تسهيل استدعاء أساليب WMI. واحدة من الأساليب الشائعة في WMI التي يتم استدعاؤها هي الأسلوب Create
على فئة Win32_Process
. هناك بعض الطرق المختلفة لاستدعاء أساليب WMI مثل استخدام Invoke-WmiMethod
، ولكن يمكن القيام بذلك أيضًا باستخدام Get-WmiObject
. نحتاج فقط إلى التقاط مثيل WMI ثم استدعاء الأسلوب على ذلك الكائن.
إليك مثالًا على بدء تشغيل notepad.exe عن بُعد على جهاز كمبيوتر بعيد. كمكافأة، نحن نستخدم اعتمادًا بديلًا للقيام بذلك أيضًا!
WMI، DCOM، وباورشيل ريموتينغ
آخر شيء يجب أن نشير إليه هو خليفة هذا الأمر: Get-CimInstance
. على الرغم من أن Get-CimInstance
يوفر بعض المزايا في استخدام باورشيل ريموتينغ كبروتوكول اتصال بعيد الافتراضي، إلا أن Get-WmiObject
في بعض الأحيان أسهل في الاستخدام.
Get-WmiObject
يستخدم DCOM للتواصل مع الكمبيوترات عن بُعد وعادة ما يكون متاحًا أيضًا. خلاف ذلك، ستحتاج إلى تمكين باورشيل ريموتينغ على نقاط النهاية البعيدة عند الرغبة في استخدام Get-CimInstance
عبر WSMAN.
للحصول على تفصيل كامل، تحقق من وثائق مايكروسوفت.