WMI - Part1

مقدمه
 
WMI راه هاي مشخصي براي فعاليت هاي پيچيده مديريتي در کامپيوتر هاي Desktop و شبکه را براي developer  ها و administrator ها فراهم مي کند. در قديم اينگونه فعاليت هاي مديريتي به وسيله  API و يا Registry انجام مي شد. اما با قبول استاندارد WMI توسط کاربران و فروشندگان، هم اکنون شما مي توانيد بدون نياز به دانستن API هاي جديد، کلاس هاي 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 لايه اصلي تشکيل شده است که عبارتند از
  1. Managed resources
  2. WMI Infrastructure
  3. 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

عبارت 127.0.0.1 به سيستمي که اين اسکريپت بر روي آن اجرا مي شود اشاره دارد. شما مي توانيد به جاي اين عبارت نام سيستم خود را به جاي آن وارد نماييد. براي اجراي اسکريپت فوق، آن را در فايلي با پسوند vbs ذخيره کنيد، و سپس  داخل محيط داس Command-Promptaشويد( از منوي استارت گزينه Run را انتخاب کنيد و عبارت CMD را درون آن تايپ نماييد و روي OK کليک کنيد) حال عبارت زير را تايپ و اجرا کنيد.
cscript Filename.vbs  
به ياد داشته باشيد که بجاي عبارت Filename ، نام و مسير فايل خود را بنويسيد.


3. WMI Consumers
Consumers بالاترين لايه است. Consumers مي تواند اسکريپت، نرم افزار مديريتي ، نرم افزار تحت وب و ... باشد که به منابع اطلاعاتي WMI Infrastructure دسترسي داشته و مديريت کند.

جستجو