Интерфейс Windows для мониторинга и уведомлений
Инструментарий управления Windows ( WMI ) состоит из набора расширений для модели драйверов Windows , которая обеспечивает интерфейс операционной системы , через который инструментированные компоненты предоставляют информацию и уведомления. WMI — это реализация Microsoft стандартов Web-Based Enterprise Management (WBEM) и Common Information Model (CIM) из Distributed Management Task Force (DMTF).
WMI позволяет использовать языки сценариев (такие как VBScript или Windows PowerShell ) для управления персональными компьютерами и серверами Microsoft Windows как локально, так и удаленно. WMI предустановлен в ОС Windows 2000 — Windows 11. Он доступен для загрузки для Windows NT и [1] Windows 95 — Windows 98. [ 2]
Microsoft также предоставляет интерфейс командной строки для WMI, который называется Windows Management Instrumentation Command-line ( WMIC ). [3] Однако WMIC устарел, начиная с Windows 10 версии 21H1 , Windows 11 и Windows Server 2022. [ 4]
Цель WMI
Целью WMI является определение собственного набора независимых от среды спецификаций, которые позволяют обмениваться информацией управления между приложениями управления. WMI предписывает стандарты управления предприятием и связанные с ними технологии для Windows, которые работают с существующими стандартами управления, такими как Desktop Management Interface (DMI) и SNMP . WMI дополняет эти другие стандарты, предоставляя единую модель. Эта модель представляет собой управляемую среду, через которую можно получить доступ к данным управления из любого источника обычным способом.
Процесс разработки
Поскольку WMI абстрагирует управляемые сущности с помощью CIM и набора поставщиков, разработка поставщика подразумевает несколько шагов. Основные шаги можно суммировать следующим образом:
- Создать управляемую модель сущности
- Определить модель
- Реализовать модель
- Создайте поставщика WMI
- Определите тип поставщика для внедрения
- Определите модель хостинга провайдера
- Создайте шаблон поставщика с помощью мастера ATL
- Реализовать логику кода в провайдере
- Зарегистрируйте провайдера в WMI и системе
- Проверьте поставщика
- Создайте образец кода для потребителя.
Важность поставщиков WMI
С момента выпуска первой реализации WMI в эпоху Windows NT 4.0 SP4 (в качестве дополнительной загрузки) Microsoft последовательно добавляла поставщиков WMI в Windows:
Многие клиенты интерпретировали рост числа поставщиков как признак того, что WMI стал для Microsoft «повсеместным» уровнем управления Windows, даже если Microsoft никогда не заявляла об этом открыто.
Из-за постоянного увеличения воздействия данных управления через WMI в Windows, люди в области управления ИТ- системами начали разрабатывать сценарии и процедуры автоматизации на основе WMI. [ требуется ссылка ] Помимо потребностей в сценариях, большинство ведущих пакетов программного обеспечения для управления, таких как MOM , SCCM , ADS, HP OpenView для Windows (HPOV), BMC Software и CA, Inc. , поддерживают WMI и способны потреблять и предоставлять информацию WMI через различные пользовательские интерфейсы . Это позволяет администраторам и операторам, не способным писать сценарии или программировать поверх WMI, пользоваться преимуществами WMI, даже не узнав о нем. Однако, если они хотят, поскольку WMI поддерживает сценарии, он дает им возможность потреблять информацию WMI из сценариев или из любого программного обеспечения для управления предприятием, поддерживающего WMI .
Функции
Для тех, кто хочет разработать одного или несколько поставщиков WMI, WMI предлагает множество функций из коробки. Вот наиболее важные преимущества:
- Интерфейсы автоматизации:
Поскольку WMI поставляется с набором интерфейсов автоматизации, готовых к использованию, все функции управления, поддерживаемые поставщиком WMI и его набором классов, получают бесплатную поддержку сценариев из коробки. Помимо проектирования класса WMI и разработки поставщика, группам разработки и тестирования Microsoft не требуется создавать, проверять или тестировать модель сценариев, поскольку она уже доступна в WMI. - Интерфейсы управления .NET
: Поскольку пространствоSystem.Management
имен [7] опирается на существующую инфраструктуру COM / DCOM , созданный поставщик WMI и его набор классов WMI автоматически становятся доступными для всех приложений .NET независимо от используемого языка (например, C# , VB.NET ). Помимо проектирования класса WMI и разработки поставщика, как и для написания сценариев, группам разработки и тестирования Microsoft не требуется создавать, проверять и тестировать новые сборки для поддержки нового пространства имен в .NET Framework, поскольку эта поддержка уже доступна в WMI бесплатно. - Интерфейсы программирования C/C++ COM/DCOM:
Как и большинство компонентов в Windows, программисты COM / DCOM могут использовать возможности поставщика, которые они разрабатывают на уровне интерфейсов COM/DCOM. Как и в предыдущих средах (скриптинг и .NET Framework ), потребителю COM/DCOM просто нужно взаимодействовать со стандартным набором интерфейсов WMI COM, чтобы использовать возможности поставщика WMI и его набор поддерживаемых классов WMI. Чтобы сделать всю информацию управления доступной из собственных API, разработчику поставщика WMI просто нужно взаимодействовать с набором предопределенных интерфейсов WMI COM. Это автоматически сделает информацию управления доступной на уровне WMI COM. Более того, объектная модель интерфейса сценариев COM очень похожа на объектную модель интерфейса COM/DCOM, что позволяет разработчикам легко ознакомиться с опытом написания сценариев. - Возможности удаленного взаимодействия через DCOM и SOAP :
WMI предлагает не просто локальные возможности COM, поскольку управление заключается в удаленном взаимодействии , а транспорт DCOM. Кроме того, транспорт SOAP будет доступен в Windows Server 2003 R2 через инициативу WS-Management, возглавляемую Microsoft , Intel , Sun Microsystems и Dell . Эта инициатива позволяет запускать любые сценарии удаленно или потреблять данные WMI через определенный набор интерфейсов, обрабатывающих запросы/ответы SOAP. Преимущество для разработчика поставщика WMI заключается в том, что когда он предоставляет все свои функции через WMI, удаленное управление Windows / WS-Management может, в свою очередь, также потреблять эту информацию (встроенные объекты в экземплярах WMI не поддерживаются в Windows Server 2003 R2. Однако это цель для Vista). Все слои в WS-Management и сопоставление модели данных CIM с SOAP предоставляются бесплатно из решения WMI/WS-Management. В случае необходимости использования DCOM реализация DCOM требует наличия прокси- DLL, развернутой на каждой клиентской машине. Поскольку WMI доступен в операционной системе Windows с Windows 2000, эти проблемы устранены. - Поддержка запросов:
WMI предлагает поддержку запросов WQL [8] из коробки. Это означает, что если поставщик не предназначен для поддержки запросов, WMI поддерживает их, используя технику перечисления из поставщика. - Возможности событий:
WMI предлагает возможность уведомлять подписчика о любом событии, которое его интересует. WMI использует язык запросов WMI (WQL) для отправки запросов событий WQL и определяет тип событий, которые должны быть возвращены. Механизм событий со всеми связанными обратными вызовами является частью интерфейсов WMI COM/DCOM и автоматизации. Любой, кто пишет поставщика WMI, может получить выгоду от этой функциональности бесплатно для своих клиентов. Потребитель должен решить, как он хочет использовать информацию управления, предоставляемую поставщиком WMI и его связанным набором классов WMI. - Генератор шаблонов кода:
Чтобы ускорить процесс написания поставщика WMI, включая все интерфейсы COM/DCOM и связанные определения, команда WMI разработала WMI ATL Wizard для генерации шаблона кода, реализующего поставщика. Сгенерированный код основан на модели классов WMI, изначально разработанной разработчиком. Разработчик поставщика WMI сможет связать предопределенные интерфейсы COM/DCOM для поставщика WMI с его набором собственных API, извлекая информацию управления для раскрытия. Упражнение состоит в заполнении «пробелов» в коде поставщика для создания желаемой логики сопряжения. - Предсказуемость:
Предсказуемость является важным вопросом для ИТ-специалистов, поскольку она определяет способность человека, имеющего опыт работы с набором интерфейсов, управляющих компонентом Windows, применять эти знания сразу, интуитивно, к любому другому управляемому компоненту Windows, не изучая все с нуля. Предсказуемость для клиента является реальным приобретением, поскольку она увеличивает возврат инвестиций ( ROI ). Человек, сталкивающийся с такой ситуацией, просто ожидает, что все будет работать так же, основываясь на своем предыдущем опыте. Постоянное увеличение интерфейсов программирования/скриптов COM оказывает огромное влияние на предсказуемость, поскольку это затрудняет для клиентов автоматизацию, управление Windows и использование их существующих знаний. WMI с CIM решают эту проблему, всегда предоставляя одну и ту же модель объектов программирования (COM/DCOM, Automation, .NET), независимо от управляемой сущности. - Защита существующих инвестиций клиентов:
Защита инвестиций клиентов и партнеров мотивирует клиентов инвестировать в технологии. Поскольку Microsoft в последние годы много инвестировала в написание поставщиков WMI, клиенты и партнеры инвестировали в инструменты, использующие возможности WMI Windows. Поэтому они, естественно, продолжают использовать эти возможности вместо того, чтобы использовать новый набор определенных интерфейсов для каждого управляемого компонента Windows. Определенный набор интерфейсов означает наличие определенного набора агентов или программного обеспечения собственной разработки на основе новой модели или набора интерфейсов, специально предназначенных для компонента или технологии. Используя возможности WMI сегодня, клиенты и партнеры могут использовать рабочие инвестиции, сделанные в прошлом, при этом минимизируя свои затраты на разработки, обучение и новые открытия. Это также окажет большое влияние на стабильность и надежность их инфраструктуры, поскольку они продолжают использовать существующую реализацию с улучшенной технологией. - Предоставьте логическую и унифицированную модель администрирования:
как кратко описано ранее во введении, эта модель основана на отраслевом стандарте CIM, определенном DMTF (https://www.dmtf.org/). Схема на основе классов CIM определяется консорциумом конструкторов и разработчиков программного обеспечения, который соответствует требованиям отрасли. Это подразумевает, что не только Microsoft использует возможности WMI, но и любые другие сторонние конструкторы или разработчики пишут свой собственный код, чтобы вписаться в модель. Например, Intel делает это для некоторых своих сетевых адаптеров драйверов и программного обеспечения. HP использует существующих поставщиков WMI и внедряет собственных поставщиков WMI в свое программное обеспечение HP Open View Enterprise Management . IBM использует WMI из пакета управления Tivoli , MOM и SMS также используют и предоставляют информацию WMI. Наконец, Windows XP SP2 использует WMI для получения информации о состоянии от антивирусного программного обеспечения и брандмауэров.
Инструменты WMI
Некоторые инструменты WMI также могут быть полезны на этапах проектирования и разработки. Это следующие инструменты:
- Компилятор MOF (MOFComp.exe): Компилятор формата управляемых объектов (MOF) анализирует файл, содержащий операторы формата управляемых объектов, и добавляет классы и экземпляры классов, определенные в файле, в репозиторий CIM. Формат MOF — это особый синтаксис для определения представления класса CIM в файле ASCII (например, MIB для SNMP — то же, что файлы MOF для CIM).
MOFComp.exe
включен в каждую установку WMI. Каждое определение, существующее в репозитории CIM, изначально определено в файле MOF. Файлы MOF находятся в %SystemRoot%\System32\WBEM
. Во время настройки WMI они загружаются в репозиторий CIM. - Инструменты администрирования WMI: Инструменты администрирования WMI состоят из четырех инструментов: WMI CIM Studio, WMI Object Browser, WMI Event Registration и WMI Event Viewer. Самым важным инструментом для разработчика поставщика WMI является WMI CIM Studio, поскольку он помогает в начальном создании класса WMI в репозитории CIM. Он использует веб-интерфейс для отображения информации и опирается на набор компонентов ActiveX, установленных в системе при первом запуске. WMI CIM Studio предоставляет возможность:
- Подключитесь к выбранной системе и просмотрите репозиторий CIM в любом доступном пространстве имен.
- Поиск классов по названию, описанию или названию свойств.
- Просмотрите свойства, методы и ассоциации, связанные с данным классом.
- Просмотреть доступные экземпляры для данного класса исследуемой системы.
- Выполнение запросов на языке WQL.
- Сгенерировать MOF-файл на основе выбранных классов.
- Скомпилируйте MOF-файл для загрузки его в репозиторий CIM.
- WinMgmt.exe:
WinMgmt.exe
не является инструментом; это исполняемый файл , реализующий службу WMI Core. В семействе операционных систем Windows NT WMI работает как служба. На компьютерах под управлением Windows 98, Windows 95 или Windows Me WMI работает как приложение. В семействе операционных систем Windows NT также возможно запустить этот исполняемый файл как приложение, в этом случае исполняемый файл работает в текущем пользовательском контексте. Для этого сначала необходимо остановить службу WMI. Исполняемый файл поддерживает некоторые переключатели , которые могут быть полезны при запуске WMI как службы или как приложения. Разработчикам поставщиков WMI, которые могут захотеть отладить своих поставщиков, по сути, необходимо запустить службу WMI как приложение. [9] - WBEMTest.exe:
WBEMTest.exe
это инструмент WMI-тестера, который поставляется вместе с WMI. Этот инструмент позволяет администратору или разработчику выполнять большинство задач из графического интерфейса, который WMI предоставляет на уровне API . Хотя этот инструмент доступен во всех операционных системах на базе Windows NT, он официально не поддерживается Microsoft. WBEMTest предоставляет возможность:- Перечислять, открывать, создавать и удалять классы.
- Перечислять, открывать, создавать и удалять экземпляры классов.
- Выберите пространство имен .
- Выполнение запросов данных и событий.
- Выполнение методов, связанных с классами или экземплярами.
- Выполняйте каждую операцию WMI асинхронно, синхронно или полуасинхронно.
- Инструмент командной строки WMI (WMIC): WMIC — это инструмент командной строки, разработанный для облегчения поиска информации WMI о системе с помощью некоторых простых ключевых слов (псевдонимов). WMIC.exe доступен во всех версиях Windows, начиная с Windows XP. При вводе
wmic /?
в командной строке отображается полный список переключателей и ключевых слов. (В Windows 11 wmic /?
отображается «WMIC устарел», а затем текст справки.)- Существует порт Linux инструмента командной строки WMI, написанный на Python и основанный на Samba4 , который называется
wmi-client
[10]
- WBEMDump.exe: WBEMDump — это инструмент, поставляемый с Platform SDK . Этот инструмент командной строки поставляется с собственным проектом Visual C++ . Инструмент может отображать классы, экземпляры или и то, и другое в репозитории CIM. Можно извлечь ту же информацию, что и с помощью WMIC.
WBEMDump.exe
требует более конкретных знаний о WMI, так как он не абстрагирует WMI как WMIC. Однако он работает под Windows NT 4.0 и Windows 2000. Также можно выполнять методы, предоставляемые классами или экземплярами. Даже если это не стандартный инструмент WMI, поставляемый с установкой системы, этот инструмент может быть весьма полезен для изучения репозитория CIM и функций WMI. - WMIDiag.vbs: Инструмент диагностики WMI — это VBScript, который можно загрузить с сайта Microsoft здесь, и который является инструментом для тестирования и проверки WMI в Windows 2000 и выше. Загрузка включает в себя довольно подробную документацию, и инструмент поддерживает многочисленные переключатели. При запуске он сгенерирует до четырех текстовых файлов, которые: перечисляют предпринятые шаги (файл LOG), обзор результатов (файл REPORT), файл статистики (в формате значений, разделенных запятыми) и, опционально, список файлов поставщиков, зарегистрированных на машине (PROVIDERS, также в формате значений, разделенных запятыми). Создаваемый файл отчета включает в себя список выявленных проблем и потенциальные способы их устранения.
- WMI Explorer: WMI Explorer Tool — это свободно распространяемая программа с открытым исходным кодом, которую можно загрузить здесь. Это инструмент для перечисления и запроса поставщиков WMI в графическом пользовательском интерфейсе .
Пример беспроводной сети
В .NET Framework класс ManagementClass представляет класс управления Common Information Model (CIM). Класс WMI может быть Win32_LogicalDisk
в случае дискового накопителя или , Win32_Process
например, запущенной программой вроде Notepad.exe
.
В этом примере показано, как MSNdis_80211_ServiceSetIdentifier
класс WMI используется для поиска SSID сети Wi-Fi , к которой в данный момент подключена система, на языке C#:
ManagementClass mc = new ManagementClass ( "root\\WMI" , "MSNdis_80211_ServiceSetIdentifier" , null ) ; ManagementObjectCollection moc = mc.GetInstances ( ); foreach ( ManagementObject mo in moc ) { string wlanCard = ( string ) mo [ "InstanceName" ]; bool active ; if ( ! bool . TryParse ( ( string ) mo [ "Active" ], out active )) { active = false ; } byte [] ssid = ( byte []) mo [ "Ndis80211SsId" ]; }
Класс MSNdis_80211_ServiceSetIdentifier
WMI поддерживается только в Windows XP и Windows Server 2003.
Расширения драйвера WMI
Расширения WMI для WDM предоставляют инструментарий на уровне ядра, такой как публикация информации, настройка параметров устройств, предоставление уведомлений о событиях от драйверов устройств и разрешение администраторам устанавливать безопасность данных через поставщика WMI, известного как поставщик WDM . Расширения являются частью архитектуры WDM; однако они имеют широкую полезность и могут использоваться также с другими типами драйверов (такими как SCSI и NDIS ).
Служба WMI Driver Extensions отслеживает все драйверы и поставщиков трассировки событий, настроенных на публикацию информации WMI или трассировки событий. Инструментированные данные об оборудовании предоставляются посредством драйверов, инструментированных для расширений WMI для WDM. Расширения WMI для WDM предлагают набор интерфейсов драйверов устройств Windows для инструментирования данных в моделях драйверов, родных для Windows, поэтому OEM-производители и IHV могут легко расширить инструментированный набор данных и добавить ценность аппаратному/программному решению. Однако расширения WMI Driver Extensions не поддерживаются Windows Vista и более поздними операционными системами. [11]
Смотрите также
Ссылки
- ^ "WMI Redistributable for Windows NT". microsoft.com . Архивировано из оригинала 24 февраля 2010 . Получено 4 мая 2018 .
- ^ "WMI Redistributable for Windows 95 and Windows 98". microsoft.com . Архивировано из оригинала 23 апреля 2007 г. Получено 4 мая 2018 г.
- ^ "Описание утилиты командной строки Windows Management Instrumentation (WMI) (Wmic.exe)". Архивировано из оригинала 2007-05-02.
- ^ "WMIC: Утилита командной строки WMI". Microsoft. 8 марта 2023 г. Архивировано из оригинала 14 октября 2023 г.
- ^ "Windows Vista Client Manageability". microsoft.com . Архивировано из оригинала 3 марта 2016 г. Получено 4 мая 2018 г.
- ^ "Поставщики WMI, поддерживаемые в Windows 10". Microsoft . 25 июня 2017 г. Архивировано из оригинала 30 сентября 2018 г. Получено 30 сентября 2018 г.
- ^ "System.Management Namespace". msdn2.microsoft.com . Архивировано из оригинала 16 апреля 2008 г. Получено 4 мая 2018 г.
- ^ "Язык запросов WMI (WQL) через PowerShell". ravichaganti.com . 1 мая 2011 г. Архивировано из оригинала 12 октября 2017 г. Получено 4 мая 2018 г.
- ^ "WMI Tasks: Computer Software (Windows)". msdn2.microsoft.com . Архивировано из оригинала 6 апреля 2008 г. Получено 4 мая 2018 г.
- ^ D'Vine, Rhonda. "Ubuntu – Ошибка". packages.ubuntu.com . Архивировано из оригинала 2 мая 2017 г. . Получено 4 мая 2018 г. .
- ^ «История разработчиков Windows Vista и Windows "Longhorn" Server: кулинарная книга по совместимости приложений». msdn2.microsoft.com . Архивировано из оригинала 21 апреля 2008 г. . Получено 4 мая 2018 г. .
Внешние ссылки
- WMI в Microsoft Developer Network
- Терминология CIM
- Обзор и предыстория WMI
- Обзор WMI и CIM
- Как улучшенная поддержка WMI делает PowerShell лучшей средой для использования и написания сценариев WMI
- Веб-трансляция Microsoft WMI
- Создатель кода WMI