مقدمه
WMI راه هاي مشخصي براي فعاليت هاي پيچيده مديريتي در کامپيوتر هاي Desktop و شبکه را براي developer ها و administrator ها فراهم مي کند. در قديم اينگونه فعاليت هاي مديريتي به وسيله API و يا Registry انجام مي شد. اما با قبول استاندارد WMI توسط کاربران و فروشندگان، هم اکنون شما مي توانيد بدون نياز به دانستن API هاي جديد، کلاس هاي WMI را که توسط فروشندگان قطعات ارائه شده است را براي ساخت ابزار مديريتي استفاده کنيد.
از کاربران مختلفي که نياز به يادگيري WMI دارند مي توان به IT ManagerSystem ، AdministratorApplication و Application Developer اشاره کرد. به عنوان مثال AdministratorApplication با استفاده از WMI مي توانند کامپيوتر هاي Desktop و شبکه را مديريت کنند. و يا توسعه دهندگان نرم افزار هاي (Application Developer) مديريتي بايد با رابط هاي WMI آشنا باشند تا قادر به بيرون کشيدن اطلاعات سيستمي براي نرم افزار خود باشند.
از کاربران مختلفي که نياز به يادگيري WMI دارند مي توان به IT ManagerSystem ، AdministratorApplication و Application Developer اشاره کرد. به عنوان مثال AdministratorApplication با استفاده از WMI مي توانند کامپيوتر هاي Desktop و شبکه را مديريت کنند. و يا توسعه دهندگان نرم افزار هاي (Application Developer) مديريتي بايد با رابط هاي WMI آشنا باشند تا قادر به بيرون کشيدن اطلاعات سيستمي براي نرم افزار خود باشند.
پيش درآمد
WMI (Windows Management Instrumentation) پياده سازي مايکروسافت از Web-Based Enterprise Management است که به اختصار WBEM ناميده مي شود. WBEM يک استاندارد صنعتي براي مديريت کامپيوتر هاي توزيع شده است.
WMI يک روش شي گرا براي مديريت است که بر روي CIM بنا شده است. CIM که مخففCommon Information Model است يک مدل شي گرا است که از تمامي خصوصيت هاي شي گرايي مانند abstraction, inheritance, dependencies, aggregation استفاده مي کند تا اطلاعاتي درمورد اشيائي مانند Systems, applications, networks, devices وغيره که ساختار ويندوز بر آن ها نهاده شده است را به ما نشان دهد.
براي درک بهتر از WMI ، در بخش بعدي ساختار WMI شرح داده خواهد شد.
مفاهيم پايه اي معماري WMI
معماري WMI از 3 لايه اصلي تشکيل شده است که عبارتند از
- Managed resources
- WMI Infrastructure
- Consumers
در تصوير زير معماري WMI نشان داده شده است
در اين لينک، تصويري که در MSDN به آن اشاره شده است وجود دارد که در آن به جزئيات بيشتري اشاره شده است.
1. Managed resources
Managed resources اجزاي فيزيکي و منطقي هستند که توسط WMI نمايش و مديريت مي شوند. برخي منابع سيستم که به وسيله WMI مديريت مي شوند عبارتند از:
ديسک ها، دستگاه هاي جانبي، فايل ها، شاخه ها (فولدر ها)، اجزاي شبکه ، چاپگر ها و ...
Managed resources توسط Provider با WMI ارتباط برقرار مي کند.
2. WMI Infrastructure
WMI از 3 جزء CIMOM ، CIM و Provider تشکيل شده است که هرکدام به صورت جداگانه توضيح داده خواهند شد.
- Provider
همانطور که گفته شد، Provider رابط بين WMI و Managed resources است. Provider ها درخواست ها را از نرم افزار ها و اسکريپت هاي Consumer گرفته و دستورالعمل ها را به Managed resources تحويل مي دهد.
Providerها معمولا به صورت Dll در فولدر SystemRoot%\system32\wbem% قرار دارند. WMI شامل چندين Provider توکار براي سيستم عامل هاي مختلف است که به نام Provider هاي استاندارد شناخته مي شوند.
در جدول زير مشخصات چند Provider براي شما آماده شده است.
Description | DLL | Namespace | Provider |
---|---|---|---|
Maps Active Directory objects to WMI. | dsprov.dll | root\directory\ldap | Active Directory provider |
Manage Windows event logs, for example, read, backup, clear, copy, delete, monitor, rename, compress, uncompress, and change event log settings. | ntevt.dll | root\cimv2 | Event Log provider |
Provides access to raw performance data. | wbemperf.dll | root\cimv2 | Performance Counter provider |
Read, write, enumerate, monitor, create, and delete registry keys and values. | stdprov.dll | root\default | Registry provider |
Provides access to SNMP MIB data and traps from SNMP-managed devices. | snmpincl.dll | root\snmp | SNMP provider |
Provides access to information on WDM device drivers. | wmiprov.dll | root\wmi | WDM provider |
Provides information about the computer, disks, peripheral devices, files, folders, file systems, networking components, operating system, printers, processes, security, services, shares, SAM users and groups, and more. | cimwin32.dll | root\cimv2 | Win32 provider |
Provides access to information about installed software. | msiprov.dll | root\cimv2 | Windows Installer provider |
- CIMOM
CIMOM فعل و انفعال هاي بين Provider و Consumer را در دست مي گيرد. اينگونه فرض کنيد که CIMOM به عنوان دلال اطلاعات WMI است. همه درخواست ها و داده هاي WMI به وسيله CIMOM جريان دارند.
- CIM
WMI بر يک ايده بنيان گذاري شده که پيکربندي و اطلاعات مديريت شده از منابع مختلف، به صورت الگوي يکنواخت نمايش داده شوند. CIM يک الگوست، که اين الگو بر مبناي استاندارد DMTF Common Information Model standard بنا نهاده شده است. اين الگو بر مبناي کلاس ها بنا نهاده شده است. کلاس ها يک طرح از منابع مديريتي WMI هستند. کلاس ها شامل خصوصيات (properties) و متد ها يي(methods) هستند. Properties حالت يک منبع را شرح مي دهند و methods توابع اجرايي هستند که عمليات هايي را روي منابع انجام مي دهند. کلاس ها به فضاهاي نام (namespaces) دسته بندي مي شوند. Namespace ها يک گروهبندي منطقي از کلاس هايي هستند که در يک حوزه مديريتي مشترک قرار دارند. به عنوان مثال فضاي نام " root\cimv2" شامل کلاس هايي است که دربرگيرنده منابع عمومي کامپيوتر و سيستم عامل هستند. به عنوان نمونه کلاس هاي زير را براي فضاي نام " root\cimv2" مي توان نام برد:
Win32_Service ، Win32_Process ، Win32_Printer و ...
همانطور که در پيش درآمد نيز گفته شد CIM يک مدل شي گرا است که از تمامي خصوصيت هاي شي گرايي مانند abstraction, inheritance, dependencies, aggregation استفاده مي کند تا اطلاعاتي درمورد اشياعي مانند ystems, applications, networks, devices وغيره که ساختار ويندوز بر آن ها نهاده شده است را به ما نشان دهد.
- WMI Scripting Library
همانطور که در در شکل نمايش داده شده است، يک قسمت ديگر در Infrastructure وجود دارد که WMI Scripting Library نام دارد. اين قسمت مجموعه اي از اشيا را فراهم مي کنند که WMI Infrastructure را از طريق زبان هاي اسکريپتي مانند VBScript, Jscript و ... قابل دسترس مي سازند. اشياء WMI scripting library يک مدل يک شکل و يکنواخت از WMI Infrastructure را مهيا مي کنند.
اسکريپت زير که به زبان VBS است، نام تمامي سرويس هاي کامپيوتر را نمايش مي دهد
Set wbemServices = GetObject("winmgmts:\\127.0.0.1") Set wbemObjectSet = wbemServices.InstancesOf("Win32_Service") For Each wbemObject In wbemObjectSet WScript.Echo "Display Name: " & wbemObject.DisplayName Next
cscript Filename.vbs
به ياد داشته باشيد که بجاي عبارت Filename ، نام و مسير فايل خود را بنويسيد.
3. WMI Consumers
Consumers بالاترين لايه است. Consumers مي تواند اسکريپت، نرم افزار مديريتي ، نرم افزار تحت وب و ... باشد که به منابع اطلاعاتي WMI Infrastructure دسترسي داشته و مديريت کند.