پروتکل WMI )Windows Management Instrumentation)
این پروتکل ،پیاده سازی مایكروسافت از Web Based Enterprise Management است كه استاندارد صنعتی برای مدیریت سیستمهای كامپیوتری توزیع شده می باشد. استاندارد WBEM شامل یك مدل اطلاعاتی مشترك (Common Information Model) برای توصیف اطلاعات مدیریتی مربوط به سیستمها ، برنامه ها ، شبكه ها ، ابزارها و سرویسها میباشد و همچنین سازوكارهایی را برای خودكار كردن كارهای اجرایی ، تعریف میكند.
پروتکل WMI میتواند از طریق هر زبان برنامه نویسی و اسكپریپتی تحت ویندوز كه توانایی كار كردن با اكتیو ایكس ها را داشته باشد ، قابل دسترسی باشد. و بطور پیش فرض بر روی ویندوز های ملنیوم به بعد نصب شده است .
هدف این پروتکل آن است كه برای هر برنامه یا اسكریپتی كه میخواهد به بصورت محلی(local) یا دسترسی از راه دور (Remote) به اطلاعات مدیریتی یك سیستم ، شبكه یا برنامه دسترسی داشته باشد ، رابط یكسان و واحدی را فراهم كند.
همه رابطهای WMIپروتکل بر پایه COM بنا شده اند و البته در دات نت هم توسط COM Inter-Op قابل دسترسی هستند. بخشهای اصلی WMI عبارتند از :
آبجكت های مدیریت شده و پروایدرها( Managed Objects and Providers)
زیربنای پروتکلWMI : WMI Infrastructure
نرم افزارهای های مدیریت و اسكریپتها (Management Applications and scripts)
به طور کلی،پروتکلWMI زیرساختی برای مدیریت شبکه و عملکردهای سیستم عامل های ویندوزی می باشد.یکی از کاربردهایی که این پروتکل برای شما ایجاد می کند،انجام خودکار عملکردهای مدیریتی روی سیستم های ریموت از طریق نوشتن یک اسکریپت و یا برنامه می باشد.همچنین داده هایی را برای قسمتهای مختلف سیستم عامل و نیز برنامه های مختلف تهیه می کند،برای مثال برنامه هایی مثل System Center Operating Manager و Windows Remote Management برنامه هایی هستند که از داده های WMI استفاده می کنند.
امکان استفاده از پروتکلWMI در تمامی برنامه های تحت ویندوز و کلیه اسکریپت ها و برنامه های مدیریتی در ابعاد enterprise وجود دارد.برنامه نویس هایی که با زبان هایی مثل C/C++ ، VB و ... کار می کنند یا با زبانهای اسکریپتی که به هر شکل یک engine روی ویندوز دارند و یا از Microsoft ActiveX object ها استفاده می کنند ، از جمله استفاده کنندگان WMI می باشند.
به زبان دیگر، این پروتکل WMIیک API در ویندوز ی باشد که در ارتباطات شبکه ای این امکان را به شما می دهد تا منابع را مدیریت و کنترل کنید.WMI به مدیران شبکه امکان گرفتن query های مختلف و قرار دادن تنظیماتی روی workstation ها ، را میدهد.
پروتکلWMI یک زیرساخت مدیریتی است که مدیران شبکه را قادر می کند تا بتوانند اشیاء روی یک شبکه را مانیتور و کنترل کنند و در تمامی سیستم عامل های ویندوز قابل استفاده است. از ویندوز ۲۰۰۰ به بعد (شامل ویندوز ME) به صورت پیش فرض روی سیستم عامل نصب است و برای سیستم عامل های قبل از آن امکان نصب آن موجود است. (فقط ویندوز ۹۸ , ۹۵). برای خودکار کردن فرایند های امنیتی، می توان یک برنامه یا اسکریپت پروتکل WMI رانوشت و آن را به صورت Remote یا Local به کار برد.با یک WMI Query می توان سیستم ها را بر حسب مشخصه خاصی از آنها فیلتر کرد. به عنوان مثال مقدار فضای حافظه RAM آزاد آنها، سیستم عامل، سرویس پک، نرم افزار های نصب شده و تنظیمات پرینتر آنها. از آنجای که به اکثر صفات هر شیئ درپروتکل WMI دسترسی وجود دارد، تعداد ویژگی هایی که در WMI Query می توان استفاده کرد مجازا بی نهایت و نا محدود است. WMI Query ها به زبان WMI Query Language یا به اختصار WQL نوشته می شود.
WMI و امنیت :
از WMI Query ها می توان برای ساختن یک فیلتر برای اعمال سیاست های گروهی استفاده کرد. فیلتری که با استفاده ازپروتکل WMI برای اعمال سیاست ها استفاده می شود، به اختصار فیلترپروتکل WMI گفته می شود. یکی از مثال های خوب برای درک کاربرد این کار سناریوی زیر است:
- با استفاده از Group Policy می توان یک نرم افزار یا یک سرویس پک را Deploy کرد.(همانطوری که در گذشته دیدیم). با فیلتر های پروتکل WMI می توان مشخص کرد یک سیاست خاص فقط روی سیستم عامل و سرویس پک مشخص اعمال شود. بدون شک در اینجا قصد ندارم به بررسی چگونگی نوشتن یک اسکریپت پروتکل WMI بپردازم و فقط می خواهم خیلی کوتاه آشنایی با فیلتر ها داشته باشیم. کد زیر، کامپیوتر های با سیستم عامل ویندوز XP سرویس پک ۳ را خارج و سایر را فیلتر می کند:
SELECT * FROM Win32_operatingsystem WHERE Caption="Microsoft Windows XP Professional" AND CSDversion="Service Pack 3"
حال اگر این Query روی یک GPOs اعمال شود، در زمان پردازش سیاست های گروهی، Query روی سیستم Local بررسی می شود. اگر شرایط Query موجود باشد، GPOs اعمال می شود در غیر این صورت مشابه آنچه در فرآیند پردازش سیاست های گروهی گفته شد اتفاق خواهد افتاد. WMI Query ها هم از یک NameSpace خاص تبعیت می کنند. بسیاری از کلاس های مفید در root\CIMv2 وجود دارند از جمله Win32_OperatingSystem که در اینجا به آن نیاز داریم. به صورت پیش فرض فضای نامی همین انتخاب می شود. با کمی جستجو می توانید مثال های خوبی از نحوه نوشتن Query ها پیدا کنید و به راحتی یک Query دلخواه خود را بنویسید.
برای ساختن یک فیلترپروتکل WMI در کنسول Group Policy Managment روی WMI Filters کلیک راست کنید و New را بزنید. در دایلوگ باکس باز شده، نام و توضیحی برای فیلتر بنویسید و سپس در قسمت Queries دکمه ADD را بزنید Query مورد نظر خود را بنویسید و OK را بزنید. اکنون یک Query اضافه کردید. حال باید معین کنید که کدام سیاست تحت تاثیر یان فیلتر اعمال شود. برای این کار در قسمت GPOs That Use This WMI ****** کلیک راست کنید و ADD را بزنید. سیاست مورد نظر خود را انتخاب کنید و آن را اضافه کنید. توجه داشته باشید که در کامپیوتر های که روی آنهاپروتکل WMI نصب نشده باشد، از پردازش سیاست هایی که روی آنها فیلترپروتکل WMI موجود باشد چشم پوشی می شود حتی اگر جواب Query برای آن ها True باشد، از آنجا که قادر به درک پروتکل WMI نیستند، سیاست را در نظر نمی گیرند. زمان بازسازی سیاست های گروهی را فراموش نکنید هر ۹۰ تا ۱۲ دقیقه قدری بر عملکرد سیستم ها اضافه می شود. در واقع فیلترپروتکل WMI باری هر چند نه چندان قابل توجه روی سیستم خواهد گذاشت و بدون شک در زمان پردازش و تعداد فرآیند ها در پردازش موثر است. پس بیهوده از فیلتر استفاده نکنید، فیلتر کردن آخرین راه حل است.
این پروتکل ،پیاده سازی مایكروسافت از Web Based Enterprise Management است كه استاندارد صنعتی برای مدیریت سیستمهای كامپیوتری توزیع شده می باشد. استاندارد WBEM شامل یك مدل اطلاعاتی مشترك (Common Information Model) برای توصیف اطلاعات مدیریتی مربوط به سیستمها ، برنامه ها ، شبكه ها ، ابزارها و سرویسها میباشد و همچنین سازوكارهایی را برای خودكار كردن كارهای اجرایی ، تعریف میكند.
پروتکل WMI میتواند از طریق هر زبان برنامه نویسی و اسكپریپتی تحت ویندوز كه توانایی كار كردن با اكتیو ایكس ها را داشته باشد ، قابل دسترسی باشد. و بطور پیش فرض بر روی ویندوز های ملنیوم به بعد نصب شده است .
هدف این پروتکل آن است كه برای هر برنامه یا اسكریپتی كه میخواهد به بصورت محلی(local) یا دسترسی از راه دور (Remote) به اطلاعات مدیریتی یك سیستم ، شبكه یا برنامه دسترسی داشته باشد ، رابط یكسان و واحدی را فراهم كند.
همه رابطهای WMIپروتکل بر پایه COM بنا شده اند و البته در دات نت هم توسط COM Inter-Op قابل دسترسی هستند. بخشهای اصلی WMI عبارتند از :
آبجكت های مدیریت شده و پروایدرها( Managed Objects and Providers)
زیربنای پروتکلWMI : WMI Infrastructure
نرم افزارهای های مدیریت و اسكریپتها (Management Applications and scripts)
به طور کلی،پروتکلWMI زیرساختی برای مدیریت شبکه و عملکردهای سیستم عامل های ویندوزی می باشد.یکی از کاربردهایی که این پروتکل برای شما ایجاد می کند،انجام خودکار عملکردهای مدیریتی روی سیستم های ریموت از طریق نوشتن یک اسکریپت و یا برنامه می باشد.همچنین داده هایی را برای قسمتهای مختلف سیستم عامل و نیز برنامه های مختلف تهیه می کند،برای مثال برنامه هایی مثل System Center Operating Manager و Windows Remote Management برنامه هایی هستند که از داده های WMI استفاده می کنند.
امکان استفاده از پروتکلWMI در تمامی برنامه های تحت ویندوز و کلیه اسکریپت ها و برنامه های مدیریتی در ابعاد enterprise وجود دارد.برنامه نویس هایی که با زبان هایی مثل C/C++ ، VB و ... کار می کنند یا با زبانهای اسکریپتی که به هر شکل یک engine روی ویندوز دارند و یا از Microsoft ActiveX object ها استفاده می کنند ، از جمله استفاده کنندگان WMI می باشند.
به زبان دیگر، این پروتکل WMIیک API در ویندوز ی باشد که در ارتباطات شبکه ای این امکان را به شما می دهد تا منابع را مدیریت و کنترل کنید.WMI به مدیران شبکه امکان گرفتن query های مختلف و قرار دادن تنظیماتی روی workstation ها ، را میدهد.
پروتکلWMI یک زیرساخت مدیریتی است که مدیران شبکه را قادر می کند تا بتوانند اشیاء روی یک شبکه را مانیتور و کنترل کنند و در تمامی سیستم عامل های ویندوز قابل استفاده است. از ویندوز ۲۰۰۰ به بعد (شامل ویندوز ME) به صورت پیش فرض روی سیستم عامل نصب است و برای سیستم عامل های قبل از آن امکان نصب آن موجود است. (فقط ویندوز ۹۸ , ۹۵). برای خودکار کردن فرایند های امنیتی، می توان یک برنامه یا اسکریپت پروتکل WMI رانوشت و آن را به صورت Remote یا Local به کار برد.با یک WMI Query می توان سیستم ها را بر حسب مشخصه خاصی از آنها فیلتر کرد. به عنوان مثال مقدار فضای حافظه RAM آزاد آنها، سیستم عامل، سرویس پک، نرم افزار های نصب شده و تنظیمات پرینتر آنها. از آنجای که به اکثر صفات هر شیئ درپروتکل WMI دسترسی وجود دارد، تعداد ویژگی هایی که در WMI Query می توان استفاده کرد مجازا بی نهایت و نا محدود است. WMI Query ها به زبان WMI Query Language یا به اختصار WQL نوشته می شود.
WMI و امنیت :
از WMI Query ها می توان برای ساختن یک فیلتر برای اعمال سیاست های گروهی استفاده کرد. فیلتری که با استفاده ازپروتکل WMI برای اعمال سیاست ها استفاده می شود، به اختصار فیلترپروتکل WMI گفته می شود. یکی از مثال های خوب برای درک کاربرد این کار سناریوی زیر است:
- با استفاده از Group Policy می توان یک نرم افزار یا یک سرویس پک را Deploy کرد.(همانطوری که در گذشته دیدیم). با فیلتر های پروتکل WMI می توان مشخص کرد یک سیاست خاص فقط روی سیستم عامل و سرویس پک مشخص اعمال شود. بدون شک در اینجا قصد ندارم به بررسی چگونگی نوشتن یک اسکریپت پروتکل WMI بپردازم و فقط می خواهم خیلی کوتاه آشنایی با فیلتر ها داشته باشیم. کد زیر، کامپیوتر های با سیستم عامل ویندوز XP سرویس پک ۳ را خارج و سایر را فیلتر می کند:
SELECT * FROM Win32_operatingsystem WHERE Caption="Microsoft Windows XP Professional" AND CSDversion="Service Pack 3"
حال اگر این Query روی یک GPOs اعمال شود، در زمان پردازش سیاست های گروهی، Query روی سیستم Local بررسی می شود. اگر شرایط Query موجود باشد، GPOs اعمال می شود در غیر این صورت مشابه آنچه در فرآیند پردازش سیاست های گروهی گفته شد اتفاق خواهد افتاد. WMI Query ها هم از یک NameSpace خاص تبعیت می کنند. بسیاری از کلاس های مفید در root\CIMv2 وجود دارند از جمله Win32_OperatingSystem که در اینجا به آن نیاز داریم. به صورت پیش فرض فضای نامی همین انتخاب می شود. با کمی جستجو می توانید مثال های خوبی از نحوه نوشتن Query ها پیدا کنید و به راحتی یک Query دلخواه خود را بنویسید.
برای ساختن یک فیلترپروتکل WMI در کنسول Group Policy Managment روی WMI Filters کلیک راست کنید و New را بزنید. در دایلوگ باکس باز شده، نام و توضیحی برای فیلتر بنویسید و سپس در قسمت Queries دکمه ADD را بزنید Query مورد نظر خود را بنویسید و OK را بزنید. اکنون یک Query اضافه کردید. حال باید معین کنید که کدام سیاست تحت تاثیر یان فیلتر اعمال شود. برای این کار در قسمت GPOs That Use This WMI ****** کلیک راست کنید و ADD را بزنید. سیاست مورد نظر خود را انتخاب کنید و آن را اضافه کنید. توجه داشته باشید که در کامپیوتر های که روی آنهاپروتکل WMI نصب نشده باشد، از پردازش سیاست هایی که روی آنها فیلترپروتکل WMI موجود باشد چشم پوشی می شود حتی اگر جواب Query برای آن ها True باشد، از آنجا که قادر به درک پروتکل WMI نیستند، سیاست را در نظر نمی گیرند. زمان بازسازی سیاست های گروهی را فراموش نکنید هر ۹۰ تا ۱۲ دقیقه قدری بر عملکرد سیستم ها اضافه می شود. در واقع فیلترپروتکل WMI باری هر چند نه چندان قابل توجه روی سیستم خواهد گذاشت و بدون شک در زمان پردازش و تعداد فرآیند ها در پردازش موثر است. پس بیهوده از فیلتر استفاده نکنید، فیلتر کردن آخرین راه حل است.