Інструментарій керування Windows (WMI) є важливою складовою інфраструктури операційних систем Windows, призначеною для управління інформацією та діями.
WMI також забезпечує доступ до даних управління для інших компонентів системи та програмних продуктів, таких як SCOM (System Center Operations Manager) або Windows Remote Management.
Що являє собою Windows Management Instrumentation (WMI)?
WMI – це платформа, яка дозволяє керувати та відстежувати стан операційної системи, а також різноманітних застосунків і служб Microsoft на комп’ютерах, серверах та інших пристроях, підключених до мережі.
WMI надає розробникам універсальний, масштабований та зручний програмний інтерфейс, що забезпечує доступ до інформації та функцій на керованих комп’ютерах та інших мережевих пристроях Microsoft.
Цей інструмент використовується для виявлення та моніторингу операційних систем, служб і додатків на комп’ютерах, а також для аналізу даних реєстру та файлової системи. WMI також дозволяє створювати та керувати скриптами та програмами для автоматизації керування та адміністрування комп’ютерів.
Для запитів інформації та виконання операцій у системі, комп’ютерах та пристроях WMI використовує мову програмування WQL (Windows Query Language).
Він також відкриває доступ до PowerShell – одного з найпотужніших та гнучких інструментів для адміністрування Windows, який можна використовувати для створення автоматизованих сценаріїв.
Крім того, WMI дозволяє розробляти спеціалізовані додатки, які надають додаткові можливості для управління та адміністрування систем і програм Windows.
Користувачі, яким потрібно стежити за станом своїх систем, проводити базове усунення несправностей і збирати дані про продуктивність, знайдуть WMI незамінним помічником.
Яке призначення WMI?
WMI є цінним інструментом у корпоративних мережах Windows, оскільки він спрощує управління та експлуатацію компонентів мережі, передаючи дані іншим продуктам для покращення та масштабування.
Основна мета WMI – забезпечити єдиний підхід до управління всіма аспектами системи Windows, такими як:
- Компоненти операційної системи
- Процеси та потоки
- Служби
- Пристрої
- Драйвери
- Програми
- Облікові записи користувачів
- Налаштування безпеки
Впровадження WMI призводить до скорочення витрат часу та ресурсів на операції та розробки, пов’язані з системами Windows. WMI також дозволяє відстежувати події в системі та збирати дані про продуктивність. Ці дані можуть бути використані для виявлення та усунення проблем або аналізу тенденцій у динаміці.
WMI найчастіше використовується для автоматизації адміністративних завдань та отримання доступу до даних без безпосередньої взаємодії з операційною системою. Це робить WMI чудовим інструментом для адміністраторів і розробників програмного забезпечення, які прагнуть автоматизувати трудомісткі процеси.
З його допомогою можна виконувати різні задачі, починаючи з моніторингу продуктивності системи та закінчуючи отриманням даних про програми. Це дозволяє розробникам створювати інтелектуальніші та ефективніші додатки, а ІТ-адміністраторам виконувати свої обов’язки з мінімальними зусиллями.
WMI надає еталонну реалізацію для доступу до системної інформації та є ключовим інструментом для управління та моніторингу систем Windows. Він є важливим компонентом для машинного навчання Azure та AzureML, а також використовується для підтримки багатьох сторонніх продуктів.
Використання WMI
Інструмент керування Windows (WMI) є реалізацією Microsoft Web-Based Enterprise Management (WBEM) – галузевої ініціативи зі створення стандартизованих технологій для доступу до інформації про управління підприємством.
WMI представляє системи, програми, мережі, пристрої та інші керовані компоненти, використовуючи галузевий стандарт Common Information Model (CIM). Розробкою та підтримкою CIM займається цільова група розподіленого управління (DMTF).
Архітектура WMI є універсальною та підтримує широкий спектр функцій управління та адміністрування. Вона забезпечує гнучку та розширювану структуру, що дозволяє виробникам створювати нових постачальників WMI для підтримки нових пристроїв, програм та інших технологічних досягнень.
Інші сфери використання:
- Комплексне управління операційною системою Windows, мережевими пристроями та службами Microsoft.
- Можливість підключення до віддалених комп’ютерів для доступу до даних WMI.
- Збір інформації про систему, включаючи запущені програми та налаштування служб.
- Отримання інформації про технічні характеристики обладнання та виконання таких дій, як вимкнення або перезавантаження системи.
- Запуск програм, управління службами (запуск, зупинка, налаштування) та доступ до даних.
- Розробники програм управління можуть використовувати цей API для створення сценаріїв у Visual Basic або Windows Scripting Host (WSH).
Архітектура WMI
WMI (Windows Management Instrumentation) – це технологія Microsoft, вперше представлена у Windows 2000. Вона дозволяє розробникам створювати програми управління, які працюють з будь-якою системою, що підтримує WMI.
Розглянемо архітектуру та термінологію WMI.
Потік архітектури WMI починається з об’єктів: керований об’єкт (яким можна керувати через WMI) – це будь-який компонент, наприклад, жорсткий диск, мережева карта, операційна система або служба. Інфраструктура WMI отримує дані від об’єкта через постачальника. Постачальник передає повідомлення від об’єкта до WMI та навпаки.
Постачальник WMI складається з DLL-файлу та файлу формату керованого об’єкта (MOF), який відстежує події та дані з об’єктів. WMI класифікує постачальників залежно від функцій, які вони надають через інтерфейс постачальника.
У Windows є багато вбудованих постачальників WMI, зокрема, постачальник Active Directory, постачальник даних конфігурації завантаження (BCD), постачальник WMI, постачальник розподіленої файлової системи (DFS), постачальник журналу подій, постачальник Hyper-V WMI, постачальник Win32, постачальник реєстру та постачальник SNMP.
Інфраструктура WMI є компонентом операційної системи Microsoft Windows, відомою як служба WMI (winmgmt). Ядро WMI та репозиторій WMI є основними частинами інфраструктури WMI.
Репозиторій WMI – це ієрархічне сховище даних, організоване за допомогою просторів імен WMI, також відомих як Загальна інформаційна модель (CIM). Служба WMI створює набір просторів імен після запуску системи, включаючи root (за замовчуванням), rootcimv2 і кореневу підписку.
Крім того, служба створює стандартний набір визначень класів, включаючи системні класи Win32 та WMI. Інші простори імен WMI можуть бути створені додатковими постачальниками WMI, і кожен простір імен містить кілька об’єктів WMI.
Служба WMI діє як посередник між постачальниками, програмами управління та репозиторієм WMI. У сховищі зберігаються лише статичні дані про об’єкти, такі як класи, визначені постачальниками. WMI динамічно отримує більшість даних від постачальника, коли їх запитує клієнт.
Споживач WMI – це програма управління або сценарій, який взаємодіє з інфраструктурою WMI. За допомогою COM API для WMI або API сценаріїв для WMI програма управління може надсилати запити, аналізувати дані, викликати методи провайдера та підписуватися на події.
WMI створює стандартизований інтерфейс для віддаленого та локального отримання даних управління. Уніфікований інтерфейс абстрагується від інтерфейсів прикладного програмування (API) операційної системи. Це дозволяє програмам і сценаріям збирати дані управління без потреби в знаннях про API операційної системи.
Як запустити запит WMI?
Однією з переваг платформи WMI є можливість запитувати її репозиторій для отримання детальної інформації про дані класу, екземпляра або схеми. Ці дані використовуються для інвентаризації локальних та віддалених систем, операційних систем, програмного забезпечення та інших адміністративних дій.
Типи запитів
Загалом існує два типи запитів, які використовуються для отримання інформації зі сховища WMI:
Синхронний запит: цей тип запиту призупиняє виконання програми до завершення запиту. Він простіший у використанні, оскільки вимагає лише один виклик інтерфейсу. Однак при великих пошуках або мережевих запитах це може призвести до зависання програми.
Асинхронний запит: якщо запит великого обсягу даних може вплинути на продуктивність системи або мережі, краще використовувати асинхронний запит.
WQL (мова запитів WMI)
Одним з популярних методів запиту до WMI є мова запитів WMI (WQL).
SQL (Structured Query Language) використовується в середовищі баз даних, а WQL – в WMI. Вони мають подібну синтаксичну структуру.
Основні оператори WQL для виконання запиту – Select, From і Where.
Типовий запит WMI починається з вибору всіх властивостей класу WMI за допомогою команди “Select”. Зірочка (“*”) використовується для вибору всіх властивостей. Ключове слово “From” використовується для вказівки класу WMI для запиту після вибору властивостей. Точний синтаксис можна переглянути у шпаргалці SQL.
Запити WQL можна виконувати через тестер WMI (wbemtest.exe), який є частиною стандартної установки Windows. Запити WMI також можна виконувати за допомогою Windows PowerShell, VBScript і мови C.
Типи запитів WQL
Запити WQL використовуються для отримання трьох різних типів інформації.
Об’єктні запити: за допомогою цих запитів можна отримати інформацію про системні ресурси Windows.
Запити подій: ці запити відстежують зміни в журналах подій, запуск процесів, стан служб, доступність комп’ютерів або об’єм вільного місця на диску.
Запити схеми: ці запити використовуються для отримання деталей про структуру схеми WMI.
Виконання запиту
Розглянемо, як запустити об’єктний запит.
Наступний метод показує, як перевірити процеси WIN_32 у локальній системі.
Інструмент WMI Tester запускається через командний рядок командою wbemtest.exe.
З’явиться наступне вікно.
Щоб підключитися до простору імен WMI, який містить клас для запиту (найчастіше RootCimv2), натисніть вкладку “Підключення”.
Щоб запустити запит, перейдіть на вкладку “Запит”, як показано нижче:
Введіть запит, для якого потрібно отримати інформацію. Наприклад, для отримання всіх процесів, запущених у локальній системі, виконайте:
select * From Win32_process
Після натискання вкладки “Застосувати” ви отримаєте результати, схожі на наведені нижче:
Вищезазначене виконання через графічний інтерфейс можна виконати в командному рядку за допомогою PowerShell:
Для отримання списку всіх процесів win_32 у PowerShell використовується наступний код:
Get-WmiObject -Class Win32_Process
Для отримання всіх параметрів запиту PowerShell перейдіть на сторінку Керування Microsoft PowerShell.
Інструкції для виконання цього запиту на VBScript і C можна знайти на сторінці документації Microsoft.
Інший спосіб запиту до репозиторію WMI – це команда WMIC:
- Запустіть CMD з командного рядка
- Введіть WMIC і натисніть Enter, щоб запустити програму
- Після цього командний рядок зміниться на wmic:rootcli>
Адміністратори можуть запускати запити WMI з цієї командної підказки.
Наприклад, для завантаження інформації про центральний процесор локальної системи команда буде такою:
wmic:rootcli> WMIC CPU
Результати/інформація відобразяться в командному рядку.
AddressWidth Architecture AssetTag Availability Caption Characteristics ConfigManagerErrorCode ConfigManagerUserConfig CpuStatus CreationClassName CurrentClockSpeed CurrentVoltage DataWidth Description DeviceID ErrorCleared ErrorDescription ExtClock Family InstallDate L2CacheSize L2CacheSpeed L3CacheSize L3CacheSpeed LastErrorCode Level LoadPercentage Manufacturer MaxClockSpeed Name NumberOfCores NumberOfEnabledCore NumberOfLogicalProcessors OtherFamilyDescription PartNumber PNPDeviceID PowerManagementCapabilities PowerManagementSupported ProcessorId ProcessorType Revision Role SecondLevelAddressTranslationExtensions SerialNumber SocketDesignation Status StatusInfo Stepping SystemCreationClassName SystemName ThreadCount UniqueId UpgradeMethod Version VirtualizationFirmwareEnabled VMMonitorModeExtensions VoltageCaps 64 9 To Be Filled By O.E.M. 3 Intel64 Family 6 Model 142 Stepping 10 252 1 Win32_Processor 1801 7 64 Intel64 Family 6 Model 142 Stepping 10 CPU0 100 205 1024 6144 0 6 31 GenuineIntel 1801 Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz 4 4 8 To Be Filled By O.E.M. FALSE BFEBFBFF000806EA 3 CPU TRUE To Be Filled By O.E.M. U3E1 OK 3 Win32_ComputerSystem RENEE-HP 8 51 FALSE TRUE
Додаткову інформацію про псевдоніми та дієслова WMIC можна знайти на сторінці Microsoft wmic.
Поширені запитання про WMI
Які порти використовує WMI?
Використовуються порти 49152 і 65535. Модель розподілених компонентних об’єктів (DCOM), на якій базується WMI, за замовчуванням використовує випадково вибраний порт TCP для з’єднань між діапазоном 49152 і 65535.
Чи є WMI застарілою технологією?
WMI все ще підтримується. Починаючи з Windows 10 версії 21H1 та піврічного випуску Windows Server 21H1, програма командного рядка WMI (WMIC) більше не підтримується.
Що таке інструменти моніторингу WMI?
Існує багато інструментів для моніторингу WMI. Ось деякі з найпопулярніших:
SolarWinds WMI Monitor з сервером і монітором програм
Датчик служби Paessler WMI з PRTG
Nagios XI
Sapien WMI Explorer
Безкоштовні інструменти: WMI Explorer, Adrem Free WMI Tools
Як усунути проблеми з WMI?
При спробі доступу до локальних або віддалених даних WMI у програмі чи скрипті можуть виникати помилки, починаючи від відсутності класів і закінчуючи порушеннями доступу. Зверніться до Посібника з усунення несправностей Microsoft WMI для отримання рішень щодо цих помилок.
Висновок
Windows Management Instrumentation є потужним інструментом, який можна використовувати для виконання різноманітних системних завдань у Windows. WMI може виявитися дуже корисним інструментом для тих, хто працює з системами Windows, хоча на початку може здаватися складним.