Windows management instrumentation (wmi)

Вітаю всіх читачів мого блогу, передплатників, гостей і просто випадкових перехожих, настав час познайомити вас з таким корисним і потужним інструментом адміністрування як Windows Management Instrumentation. коротко просто WMI. Даний інструмент є частиною операційної системи Windows, і що ще краще, сценарії сервера Windows Script Host дозволяють до нього отримати доступ.

Windows management instrumentation (wmi)

Так що ж таке WMI? Якщо говорити по простому, то WMI дозволяє отримати доступ практично до всіх елементів системи, аж до фізичного обладнання (процеси, служби, файлова система, мережева карта, процесор, BIOS, материнська плата і багато іншого). Більше того, за допомогою Windows Management Instrumentation ви можете обробляти різні події WMI (чи була запущена якась програма, чи змінився обсяг диска або може в папці з'явилися нові документи, і багато, багато чого ще). Зацікавило? Сподіваюсь що так. Природно, що Windows Management Instrumentation дозволяє працювати не тільки локально, але і з віддаленими системами, а інакше яке це адміністрування.

І так, з чого ж складається WMI? На жаль, з дуже багатьох елементів, але не лякайтеся, я торкнуся лише найважливіші моменти. Почну, як то кажуть, по простому. Уявіть собі величезну кількість бібліотек (понад п'ять тисяч), в кожній бібліотеці описані методи і властивості для роботи з тим чи іншим елементом системи, в WMI ці бібліотеки називаються класами, класи мають таку властивість як успадкування, тобто, один клас (суперклас) містить в своєму складі дочірні, які можуть повністю або частково наслідувати методи і властивості суперкласу. Однак, тримати весь цей арсенал в одному місці просто самогубство, для того, що б хоч як то розподілити всі класи по їх функціональної схожості, в WMI існує таке поняття як простір імен. своєрідні папки, простору імен можуть бути вкладеними, головним є простір root. Нижче я навів приклад скрипта, який виводить список всіх просторів імен, що входять в кореневе простір root. Не забудьте, що для роботи скрипта потрібно компонент WindowSystemObject і права адміністратора.

Давайте подивимося на приклад

Давайте розберемо ключові частини скрипта, через підрядник:

Button.OnClick = GetRef ( "GetNames") - після натискання на кнопку буде відбуватися виклик функції GetNames за допомогою процесора GetRef (для мови Jscript все набагато простіше, згадаємо приклад зі статті Штурмуємо протокол HTTP). У тілі самої функції GetNames буде за допомогою оператора call відбуватися виклик функції Namespaces з передачею їй початкового простору імен (Root). Функція write_data буде проводити запис списку просторів імен WMI в текстовий файл, як параметр передається змінна strResult.

Тепер давайте більш детально розберемо функцію Namespaces:

Рядок Set objService = GetObject ( "winmgmts:" strComputer "" strNamespace) відповідає за підключення до простору WMI за допомогою монікера. як ви помітили, тут використовується метод GetObject, а не CreateObject, як це було раніше. Мінлива objService буде зберігати тепер посилання на об'єкт SWbemServices (дивимося статтю), який за допомогою методу InstancesOf дозволить отримати колекцію всіх об'єктів для класу __NAMESPACE. Це системний клас (ознакою є подвійне підкреслення спочатку) і дозволяє отримати доступ до простору імен, у нього є властивість Name, яке зберігає ім'я WMI простору імен. Всі імена в колекції перебираються рекурсивно за допомогою циклу For Each ... In

Windows Management Instrumentation (WMI) - отримуємо список властивостей, методів і кваліфікаторів

Забігаючи трохи вперед, я написав невеличкий скрипт на мові VBScript, який дозволить отримати список властивостей, методів і кваліфікаторів (так, і з такими новинками вам доведеться познайомитися) для заданого класу Windows Management Instrumentation:

Схожі статті