مدرسة المهوس باستخدام PowerShell للحصول على معلومات الكمبيوتر
يمكن استخدام WMI وأخوه الجديد CIM لإدارة أجهزة Windows في البيئة الخاصة بك. لكن هل تعرف الفرق بينهما؟ انضم إلينا أثناء إلقاء نظرة.
تأكد من قراءة المقالات السابقة في السلسلة:
- تعلم كيفية أتمتة ويندوز مع PowerShell
- تعلم استخدام Cmdlets في PowerShell
- تعلم كيفية استخدام الكائنات في PowerShell
- تعلم تنسيق وتصفية ومقارنة في PowerShell
- تعلم كيفية استخدام الاتصال عن بعد في PowerShell
وتنبقي لبقية المسلسل طوال الأسبوع.
المقدمة
WMI لتقف على Windows Management Instrumentation. تشير كلمة "أجهزة القياس" إلى حقيقة أن WMI تسمح لك بالحصول على معلومات حول الحالة الداخلية لجهاز الكمبيوتر الخاص بك ، تمامًا مثل أدوات لوحة المعلومات في سيارتك يمكنها استرداد وعرض معلومات عن حالة المكونات الداخلية لسيارتك.
يتكون WMI من مستودع يحتوي على فئات تمثل مكونات يمكن إدارتها داخل جهازك. نقصد بذلك فقط لأن WMI يحتوي على فئة Win32_Battery لا يعني أن الجهاز يحتوي على بطارية. يمكن عندئذٍ استعارة هذه الفئات للحصول على المعلومات محليًا أو حتى عبر شبكة باستخدام لغة استعلام تشبه إلى حد كبير لغة SQL تسمى WQL. ومع ذلك ، فمن المعروف أن WMI غير موثوق بها للغاية ، ويرجع ذلك في الغالب إلى حقيقة أنها تقوم على RPC (استدعاء الإجراءات عن بعد) ، والتي تفعل بعض الأشياء المجنونة مع المنافذ التي يختارون التواصل عليها..
بدءًا من Windows 8 و Server 2012 ، يتم التخلص من WMI لصالح نموذج المعلومات الشائعة أو CIM باختصار. والفرق الوحيد بين WMI و CIM هو بروتوكولات النقل التي يستخدمونها. بينما يقوم WMI بتنفيذ الاستعلامات باستخدام "استدعاء الإجراءات عن بعد" ، يستخدم CIM HTTP ، والذي يبدو أنه يحدث فرقًا كبيرًا. على الخلفية لا يزالون يتحدثون إلى نفس مستودع المعلومات.
باستخدام WMI
الطريقة الأسرع والأسهل لاستكشاف المعلومات المتاحة لك عبر WMI هي الحصول على نسخة من أي متصفح WMI مجاني. نحن نحب هذا. بمجرد تحميله ، قم بتشغيله وستتوفر لك واجهة رسومية لتصفح فئات WMI.
إذا كنت تريد معرفة شيء ما عن تكوين قرص الكمبيوتر ، فاضغط على تركيبة لوحة المفاتيح Ctrl + F لإظهار مربع بحث ، ثم اكتب "logicaldisk" واضغط على enter.
سينتقل هذا فوراً إلى فئة Win32_LogicalDisk.
في النصف السفلي من التطبيق ، يمكنك أن ترى أن لدينا مثيلين للفصل.
عندما يكون لدينا الفصل الذي نبحث عنه ، فإن الاستعلام عنه من PowerShell هو أمر مستقيم.
الحصول على WmiObject -Query "SELECT * FROM Win32_LogicalDisk"
لم أر هذه الصيغة لبعض الوقت مع الناس في هذه الأيام مفضلين استخدام بناء جملة معلمات جديد.
Get-WmiObject -Class Win32_LogicalDisk
إذا كنت ترغب في الحصول على المعلومات من كمبيوتر آخر على الشبكة ، يمكنك ببساطة استخدام المعلمة ComputerName.
Get-WmiObject -Class Win32_LogicalDisk -ComputerName Viper -Credential viper \ administrator
باستخدام CIM
مع الأخذ في الاعتبار أن CIM لا يتوفر إلا على Windows 8 و Server 2012 ، فإن المضي قدمًا في هذا هو بالتأكيد طريقة الانتقال.
Get-CimInstance -ClassName Win32_LogicalDisk
يوجد أيضًا إكمال لعلامة التبويب لمعلمة -ClassName عند استخدام Get-CimInstance ، مما يدل على أن المضي قدمًا في هذا هو المكان الذي ستتركز فيه جهود Microsoft.
في الواقع ، تم تطوير WMI بواسطة فريق منفصل تمامًا داخل Microsoft ، ولكن تم الاستيلاء عليه لاحقًا من قِبل الأشخاص المسؤولين عن PowerShell. كانوا هم الذين لاحظوا أنه سيكون من الصعب جداً تنظيف الفوضى التي تركها WMI. في محاولة لمعالجة الموقف ، يحاولون جعل WMI و CIM أكثر متوفرة من خلال كتابة أوامر cmdlets المجمعة التي تستخدم WMI و CIM تحت غطاء المحرك. الطريقة الوحيدة للتحقق ما إذا كان cmdlet هو التفاف عن طريق النظر في الوثائق. على سبيل المثال ، يكون الأمر cmdlet Get-Hotfix عبارة عن مجمّع لفئة Win32_QuickFixEngineering ، كما هو موضح في الوثائق.
هذا يعني أنه يمكنك الحصول على الإصلاحات العاجلة على الأجهزة عن بعد باستخدام الأمر cmdlet Get-HotFix بدلاً من استعلام WMI.
احصل على HotFix -ComputerName localhost
لذلك هناك لديك. فقط تذكر أنه إذا كان هناك أمر cmdlet مخصص ، فستحتاج دائمًا لاستخدامه ، متبوعًا بـ CIM في حالة عدم وجود أمر cmdlet. أخيرًا ، إذا فشل كل شيء آخر ، أو إذا كان لديك أجهزة قديمة في بيئتك ، فستحتاج إلى استخدام WMI. هذا كل ما لدي في هذا الوقت. أراك غدا لمزيد من المرح PowerShell.