في موضوع WMI in brief اتكلمنا بإيجاز عن الـWMI وإستخداماته. وإتكلمنا عن حاجة إسمها WMI Consumer أو WMI Application وقولنا ان دي الـTool اللي من خلالها نقدر نستخدم الـWMI علشان نحصل على أي معلومات عن الـManaged Resource. وذكرنا أمثلة ليها وكان من ضمنها الـPowerShell Script. وفي الموضوع ده هنعرف إزاي نقدر نستخدم WMI من خلال Windows PowerShell.
في PowerShell طريقتين علشان تقدر تستخدم الـWMI.
الطريقة الأولي: هي إنك تستخدم أمر Get-WmiObject
إستخدام الأمر: get-help get-wmiobject -full علشان تعرف كل المعلومات الخاصة بالأمر Get-Wmiobject زي الـsyntax والـparameters.
مثال 1: عرض معلومات عن الكمبيوتر بإستخدام WMI
{"Get-Wmiobject -class Win32_ComputerSystem | Where {$_.Name -eq "XYZ
في مثال 1، إستخدمت إسم الـWMI class الخاص بالـBIOS كـparameter للأمر Get-WmiObject
مثال 2: عرض كل الـWMI Classes الموجوده في CIMV2 namespace
Get-Wmiobject -namespace "Root\CIMV2" -list
في مثال 2، إستخدمت الـnamespace كـparameter للأمر Get-Wmiobject.
مثال 3: إستخدام WMI Query للحصول على معلومات عن الـService
"Get-Wmiobject -Query "Select * from Win32_Service
الطريقة الثانية: إستخدام PowerShell WMI Type Accelerator
الـType Accelerator الخاصة بـWMI:
- [WMI]
- [WMIClass]
- [WMISearcher]
[WMI]: وظيفته أنه يساعدك في الحصول على معلومات عن WMI Object محدد عن طريق أنك تستخدم خاصية من خصائص الـObject ده في الحصول على كل معلوماته. أحياناً بيكون أسهل من الـGet-WMIobject في حالة توافر معلومات عن الـWMI Object. أو بمعني أخر الـ[WMI] يستخدم مع الـObjects.
مثال 4: عرض معلومات عن الكمبيوتر بإستخدام WMI] Type Accelerator]
' "WMI]'\\.\root\CIMv2:Win32_ComputerSystem.Name="COMPUTERNAME]
في مثال 4، إستخدمنا [WMI] بدلاً من Get-Wmiobject، وحددنا الـWMI Object path و إختارنا خاصية (Property) من خصائص الـ Object المطلوب عرض معلوماته، في هذا المثال الخاصية هي (Name)
[WMIClass]: ده بيكون مخصص للإستخدام مع الـWMI Classes
مثال 5:
* WMIClass]'\\.\root\CIMv2:Win32_ComputerSystem' | format-list]
[WMISearcher]: هذا النوع يستخدم الـWMI Query في شكل String. ثم يقوم بإنشاء WMI Searcher Object تستخدم الـQuery. أخيراً يستخدم ()Get لتنفيذ الـQuery وعرض الناتج.
مثال 6:
"ComputerInfo = [WMISearcher]"Select * From Win32_ComputerSystem$ ()ComputerInfo.GET$

