Начиная карьеру системного администратора, Вы вероятно и не задумывались о том, что вместе с Вашим профессиональным ростом будет расти размер и сложность обслуживаемых систем. И вот наступил момент, когда вы поняли, что нужно принципиально новое решение, для того чтобы справляться с огромным количеством рутины, да ещё и в разных офисах вашей компании. Вероятнее всего, Вы уже немного знакомы с WMI на практике и используете некоторые готовые сценарии WMI для решения повседневных задач. Но согласитесь, что эффективное использование технологии начинается только тогда, когда вы понимаете ее архитектуру и четко представляете весь спектр возможностей, которые эта технология может вам предоставить.
Основная моя цель – кратко изложить основы, необходимые для эффективного использования вами этой технологии и представить вам набор рецептов по ее применению в реальных условиях.
Вы получите практический навык работы со всеми основными средствами WMI, выполнив несколько простых, но весьма полезных упражнений. Я предполагаю, что вы немного знакомы с программированием на VBScript и с азами языка SQL, а также имеете общее представление об объектно-ориентированном программировании. Обратите внимание на готовые примеры кода, которые помогут вам в Вашей работе.
Что такое WMI?
Формально: аббревиатура WMI – это Windows Management Instrumentation (инструментарий управления Windows). Из названия понятно, для чего создана и применяется эта технология. Стоит лишь добавить, что она давно перешагнула рамки управления только операционной системой Windows и позволяет контролировать множество других совместимых с ней приложений.
В основе структуры представления данных в стандарте WBEM лежит CIM (Common Information Model – модель информации общего типа), реализующая объектно-ориентированный подход к представлению компонентов систем как классов со своим набором свойств и методов, а также принципов наследования.
Основное средство для описания новых элементов модели CIM – это синтаксис языка Managed Object Format (MOF), который является текстовым и легко понятным человеку. Таким образом, любое приложение или драйвер в операционной системе, которая поддерживает стандарт WBEM, может добавить к системной модели CIM свой набор классов. Такое расширение модели CIM позволяет легко интегрировать в единую систему мониторинга и управления все новые и новые приложения. Для этой интеграции приложение должно лишь зарегистрировать свои классы в существующей модели CIM и обеспечить стандартные вызовы встроенных процедур для создания объектов этих классов и наполнения их свойствами и методами. Набор этих процедур оформляется, как WMI Provider – специальная библиотека, являющаяся мостом между любым приложением и ядром службы WMI.
Таким образом, WMI – это открытая унифицированная библиотека (репозиторий) однотипных интерфейсов доступа к параметрам, настройки и свойствам различных систем и их компонентов. Архитектура WMI представлена на рис. 1.
Рисунок 1. Архитектура WMI
Многие производители программного и аппаратного обеспечения ведут разработку ПО в соответствии со стандартом WBEM. Как следствие, это ПО совместимо и с WMI, а значит, может управляться через единый и удобный интерфейс.
Классы, объекты, свойства и методы
Поскольку WMI построена по объектно-ориентированному принципу, то все данные об операционной системе, ее свойствах, управляемых приложениях и обнаруженном оборудовании представлены в виде объектов. Каждый тип объекта описан классом, в состав которого входят свойства и методы. Определения классов описаны в MOF-файлах, а объекты этих классов с заполненными свойствами и доступными методами при их вызове возвращаются WMI-провайдерами. Управляет созданием и удалением объектов, а также вызовом их методов служба CIM Object Manager.
Получается, что если мы хотим управлять настройками сетевого адаптера, то мы должны запросить у CIM Object Manager экземпляр объекта нужного нам сетевого адаптера (забегая вперед, скажу, что этот объект принадлежит классу Win32_NetworkAdapterConfiguration) и вызвать нужные нам методы. В частности, для того чтобы обновить аренду адреса на DHCP сервере, достаточно вызвать метод RenewDHCPLease экземпляра объекта Win32_NetworkAdapterConfiguration.
Обзор средств работы с WMI для администратора
Начнем фактическое знакомство с WMI с обзора утилит, которые позволяют вам работать с WMI на ОС семейства Windows. Условно разделим этот набор утилит на поставляемые с операционной системой по умолчанию и набор утилит, которые потребуется скачивать с сайта компании Microsoft. К первой категории относятся следующие утилиты:
• wmimgmt.msc – оснастка консоли MMC, позволяющая в целом управлять самой системой WMI на выбранном компьютере.• Winmgmt.exe – консольная утилита управления WMI. Выполняет аналогичные действия, что и консоль MMC wmimgmt.msc. Кроме того, является исполняемым файлом сервиса WMI в системе. Для запуска из консоли используется с опцией /exe (winmgmt.exe /exe).• Wbemtest.exe – графическая утилита для интерактивной работы с WMI. Удобна для тестирования классов и методов, просмотра свойств и т. п.• Wmic.exe – консольная утилита для вызова объектов и методов WMI (WMI Console) – присутствует только в Windows XP и Windows Server 2003.• mofcomp.exe – компилятор MOF-файлов. Служит для расширения репозитория WMI и тонких операций с библиотекой классов WMI, а также для «ремонта» нарушенного репозитория.
Ко второй категории средств для работы с WMI, которые требуется дополнительно устанавливать, относится:
Знакомимся с утилитой WBEMTEST
Чтобы прямо сейчас посмотреть, какой набор классов определен в репозитории WMI на вашем персональном компьютере, достаточно запустить утилиту wbemtest.exe и установить флажок «Enable All Privileges», как показано на рис. 2.
Рисунок 2. Основное окно утилиты WBEMTEST
Рисунок 3. Окно настройки подключения к репозиторию WMI утилиты WBEMTEST
Рисунок 4. Основное окно утилиты WBEMTEST после подключения к репозиторию WMI
Рисунок 5. Окно результатов запроса со списком всех классов WMI пространства имен CIMv2
Дважды щелкните курсором мыши по классу Win32_OperatingSystem, посмотрите его свойства. Пример того, как это выглядит, показан на рис. 6.
Рисунок 6. Окно свойств класса Win32_OperatingSystem
Далее нужно нажать кнопку «Instances» и в открывшемся окне дважды щелкнуть курсором мыши по строке в списке экземпляров операционных систем. В открывшемся окне свойств экземпляра операционной системы найдите свойство («Property») с названием «Name», как это показано на рис. 7.
Рисунок 7. Окно свойств экземпляра объекта класса Win32_OperatingSystem
Дважды кликните по свойству курсором мыши. В открывшемся окне редактора свойств, которое показано на рис. 8, скопируйте отображаемое значение в буфер обмена. Оно пригодится нам в дальнейшем.
Рисунок 8. Окно со значением свойства Name экземпляра объекта класса Win32_OperatingSystem
Далее закройте все окна, кроме основного окна программы wbemtest. В блокноте отредактируйте строку из буфера обмена следующем образом:
– Заключите строку в кавычки.- До первых кавычек добавьте следующий текст: «Win32_Operating-System. Name=».- Замените все одинарные обратные слеши на двойные.
В итоге у вас должна получиться примерно следующая строка (в зависимости от версии ОС и логического диска, куда она установлена):
Рисунок 9. Окно вызова метода для экземпляра объекта класса Win32_OperatingSystem утилиты WBEMTEST
Поздравляю, Вы только что отправили свою операционную систему в перезагрузку, используя WMI. Если вы вдруг получили вместо перезагрузки сообщение об ошибке 0x80041062 «Privilege not held», то это означает, что вы забыли установить опцию «Enable All Privileges» до подключения к репозиторию WMI.
Рисунок 10. Окно подключение к пространству имен WMI с явным указанием имени сервера
Не пробуйте подключаться к локальной машине, на которой запрашиваются объекты и методы WMI (например, на той, на которой сейчас выполняется утилита wbemtest), используя отличные от текущих учетные данные – все равно это у вас не получится. Это специальная защита для повышения локальной безопасности WMI, но о ней мы поговорим позже.
Чтобы воспользоваться этой очень важной и полезной для администратора утилитой, достаточно запустить интерпретатор командной строки cmd.exe и в строке приглашения набрать WMIC. После этого у вас появится приглашение консоли WMI, как это показано на рис. 11.
Рисунок 11. Командное окно с запущенной утилитой WMIC в интерактивном режиме
Для получения справки по всем командам, доступным из консоли WMIC, достаточно в строке приглашения ввести команду «/?». Синтаксис каждой команды или глобальной опции вы можете посмотреть, введя ее название и знак вопроса. Например:
Так мы работаем с утилитой WMIC в интерактивном режиме. Однако ничто не мешает нам использовать ее и в пакетном режиме из наших BAT/CMD-сценариев. Например, в приглашении командной строки CMD можно написать:
и получить тот же результат.
Утилита WMIC создана для удобства использования WMI прямо из командной строки, поэтому наиболее употребимые классы WMI доступны для использования под псевдонимами (ALIAS). Вы можете самостоятельно определить псевдонимы для тех классов, для которых это еще не сделано, или добавить новые псевдонимы для тех классов WMI, которые уже их имеют.
Список псевдонимов, которые определены на Windows XP Service Pack 2 по умолчанию с их кратким описанием, приведены в таблице 1.
Таблица 1. Список псевдонимов утилиты WMIC и соответствие их классам WMI
Теперь давайте попробуем использовать утилиту WMIC для работы с WMI из командной строки. Для начала выйдите из интерактивного режима консоли WMIC командой exit. Вы оказались в среде командного интерпретатора CMD. В приглашении наберите команду:
Вы получите список процессов, запущенных на вашем локальном компьютере. Теперь выполните команду:
Теперь список процессов ограничен только теми процессами, в имени исполняемого модуля которых присутствует строка «cmd.exe». Обратите внимание на PID процесса(ов).
Давайте попробуем отобрать интересующие нас процессы, используя непосредственно WMI и не прибегая к стандартным средствам командной строки. Для этого просто напишите:
wmic process where description=’cmd.exe’ list brief
Сравните полученные результаты. Запомните PID процесса CMD. EXE.
Вызовем метод Terminate для экземпляра объекта WMI. Так мы завершим интересующий нас процесс в системе. Для того чтобы однозначно определить процесс, который мы хотим завершить, нам нужно использовать его PID или какой-либо другой набор атрибутов процесса, которые позволяют его однозначно отличить от множества других процессов в системе. Для завершения процесса нам нужно вызвать метод WMI. Для этого существует команда CALL. Для того чтобы вывести справку по всем методам, применимым к объектам типа PROCESS (Win32_Process), наберите команду:
Среди них обратите внимание на метод Terminate – он принимает в качестве единственного входного параметра значение типа UINT32 (беззнаковое 32-разрядное целое) в качестве индекса причины завершения процесса. В данном случае этот параметр аналогичен Exit-коду.
Запустите четыре разных экземпляра процесса cmd.exe (откройте 4 командных окна). Еще раз выполните команду:
В результате вы получите в ответ примерно следующее:
28 cmd.exe 8 5156 1 2498560 28 cmd.exe 8 4940 1 2498560 31 cmd.exe 8 612 1 2703360
Итак, чтобы завершить конкретный процесс, просто наберите:
wmic process where processid=’****’ call terminate(0)
вместо звездочек укажите PID нужного вам экземпляра процесса cmd.exe.
Теперь давайте одной командой завершим все оставшиеся процессы cmd.exe, для этого просто введите команду:
wmic process where description=’cmd.exe’ call terminate(0)
Что за конструкция where и как еще ее можно использовать, мы разберем чуть позже в разделе «Язык запросов WQL».
Для того чтобы подключиться к репозиторию WMI на другом компьютере и выполнять все те же действия, при условии, что наша учетная запись обладает достаточными правами, нам всего лишь нужно немного модифицировать нашу командную строку. Теперь наши команды должны выглядеть примерно так:
В довершение краткого описания утилиты WMIC, следует сказать об еще одной, поистине замечательной, ее особенности – форматировании вывода. Практически все команды WMIC, которые возвращают информацию, могут ее форматировать разными способами. Для этого используется ключ «/format:». Форматирование производится с использованием технологии XSLT (шаблонов для преобразования XML). По умолчанию уже определен ряд готовых преобразований: CSV, HFORM, HMOF, HTABLE, HXML, RAWXML, TABLE, VALUE. Вы так же сами можете определить дополнительные шаблоны форматирования в формате XSLT и использовать их совместно с WMIC.
Краткое практическое знакомство c WMI CIM Studio
Это набор приложений Microsoft Internet Explorer, который позволяет с одной стороны очень тонко, с другой стороны довольно удобно работать с WMI. При этом вы можете как просматривать классы и вызывать методы, так и создавать события и даже модифицировать репозиторий WMI. Поэтому будьте очень осторожны. Если вы запускаете WMI CIM Studio на Windows XP Service Pack 2, то Internet Explorer предупредит вас о потенциальной угрозе безопасности. Вам следует разрешить заблокированное содержимое ActiveX.
На рис. 12 показан вид окна WMI CIM Studio. Слева вы видите набор классов WMI и их иерархии в том пространстве имен WMI, которое вы выбрали при подключении. Справа перечислены все свойства выбранного класса. Все методы класса перечислены на закладке Methods, а на закладке Associations показана «родословная» этого класса и других классов, которые выведены из него.
Рисунок 12. Окно утилиты WMI CIM Studio с открытыми свойствами класса Win32_OperatingSystem
Если вы хотите посмотреть все экземпляры объектов выбранного класса, существующие в вашей системе, то достаточно нажать кнопку со значком списка (четвертая справа кнопка в правой панели кнопок).
WMI CIM Studio очень удобный инструмент для поиска классов и свойств в огромном море репозитория WMI. Для поиска нажмите кнопку со значком бинокля и введите шаблон для поиска, например «network». Выберите область поиска (Class names, Class description, Property names) и нажмите «Go!». В целом WMI CIM Studio очень хороший инструмент для поиска и исследования репозитория WMI и для интерактивного анализа состояния экземпляров объектов WMI.
Теперь нам следует разобраться, что же такое WQL, а также каким образом в разделе, где описана работа WMIC, мы делали выборку объектов WMI по определенным критериям. Разбирая эту тему, полезно вспомнить, что объектно-ориентированная модель представления данных хорошо ложится на структуру реляционных баз данных. В частности можно провести следующие аналогии: определение таблицы данных (поля и их типы) – это классы объектов, строки в конкретной таблице – это экземпляры объектов данного класса. Каждое поле (столбец) в таблице – это свойство всех объектов данного класса. Каждая ячейка в конкретной строке – это свойство (property) конкретного экземпляра объекта. Связи таблиц и представления можно рассматривать как частный случай наследования. Триггеры и встроенные процедуры исходя из этой аналогии – это методы классов.
Собственно, для того чтобы удобно было работать с множественными экземплярами объектов WMI, используется язык WMI Query Language (WQL), который является подмножеством ANSI SQL.
Ниже приведен пример некоторых типичных WQL-запросов:
Win32_LogicalDisk FileSystem
Win32_LogicalDisk FileSystem
Win32_LogicalDisk FileSystem
Win32_DiskDrive Partitions SectorsPerTrack
Win32_LogicalDisk (Name Name )
FreeSpace FileSystem
Win32_NTLogEvent Logfile
Meta_Class __Class Win32
__InstanceCreationEvent TargetInstance ISA
WITHIN TargetInstance. SourceName NumberOfEvents
Вы можете поупражняться в запросах WMI с помощью уже хорошо известной вам утилиты WBEMTEST, нажав кнопку «Query» в ее главном окне.
Теперь вспомните утилиту командной строки WMIC, функции которой мы разбирали немного выше. В ее синтаксисе также могут использоваться WQL-запросы для удобства работы с наборами объектов одного класса. Чтобы использовать уже имеющиеся и проверенные WQL-запросы (большинство из них удобнее всего проверять утилитой WBEMTEST), из командной строки достаточно отбросить у WQL-запроса первую часть: «select * from». Затем заменить имя класса на его алиас (псевдоним) из таблицы 1 и при необходимости добавить после запроса вызов метода, формат вывода списка или запрос свойства объекта. Примеры того, что при этом получается, я уже приводил выше.
Если же среди псевдонимов в таблице 1 нет нужного вам класса, то есть два пути решения. Первый – добавить новый псевдоним для нового класса. Этот путь хорош, если с этим классом из WMIC вы будете работать только на этом компьютере. Если же вы хотите использовать команду wmic на разных компьютерах, в том числе и на тех, на которых такой алиас вы не определяли, то можно воспользоваться вторым способом. Второй способ позволяет явно использовать настоящее имя класса WMI при обращении к нему с помощью WMIC. Для этого используйте следующий синтаксис:
wmic path Win32_LogicalDisk WHERE FileSystem=’NTFS’ get /value
The framework for management information and activities on Windows-based operating systems is called Windows Management Instrumentation (WMI).
WMI также предоставляет данные управления другим компонентам операционной системы и продуктам, таким как SCOM (System Center Operations Manager) или удаленное управление Windows.
Что такое инструментарий управления Windows (WMI?)
WMI — это платформа для управления и мониторинга операционной системы и других приложений и служб Microsoft на персональных компьютерах, серверах и других сетевых устройствах.
WMI предоставляет комплексный, масштабируемый и простой в использовании программный интерфейс, который обеспечивает программный доступ к информации и службам на управляемых Microsoft компьютерах и других сетевых устройствах.
Он использует язык программирования WQL (язык запросов Windows) для запроса информации и выполнения операций в операционной системе, компьютерах и устройствах.
Какова цель WMI?
WMI полезен в корпоративной сети Windows, поскольку упрощает работу и управление компонентами корпоративной сети, передавая данные другим продуктам для дальнейшего расширения и масштабирования.
Основная цель WMI — предоставить унифицированную структуру управления для всех аспектов системы Windows, например:
Цель изобретения WMI заключается в сокращении затрат и времени на операции и разработки, связанные с системами Windows. W MI также позволяет отслеживать системные события и собирать данные о производительности. Эти данные можно использовать для устранения неполадок или отслеживания тенденций с течением времени.
WMI обеспечивает эталонную реализацию для доступа к системной информации и является ключевым инструментом для управления и мониторинга систем Windows. Это краеугольный камень для машинного обучения Azure и AzureML, и он используется для поддержки широкого спектра сторонних продуктов.
Использование WMI
Инструментарий управления Windows (WMI) — это решение Microsoft для управления предприятием через Интернет (WBEM), отраслевая инициатива по разработке стандартизированных технологий для доступа к информации о корпоративном управлении.
WMI представляет системы, приложения, сети, устройства и другие управляемые компоненты с использованием отраслевого стандарта Common Information Model (CIM). Целевая группа по распределенному управлению (DMTF) создает и поддерживает CIM.
Другое использование:
WMI (Инструментарий управления Windows) — это технология Microsoft, первоначально представленная в Windows 2000. Она позволяет программистам создавать программы управления, которые работают с любой системой, поддерживающей WMI.
Давайте посмотрим на архитектуру и терминологию WMI.
Поток архитектуры WMI начинается с объектов: такой компонент, как жесткий диск, сетевая карта, операционная система или служба, является управляемым объектом (которым можно управлять через WMI). Инфраструктура WMI получает данные от объекта через провайдера. Он предоставляет и получает сообщения от WMI и передает их объекту.
Поставщик WMI включает в себя библиотеку DLL и файл формата управляемых объектов (MOF), который отслеживает события и данные от объектов. W MI классифицирует провайдеров в соответствии с функциональностью, предоставляемой интерфейсом провайдера.
В Windows имеется множество встроенных поставщиков WMI, включая поставщика Active Directory, поставщика WMI данных конфигурации загрузки (BCD), поставщика распределенной файловой системы (DFS), поставщика журнала событий, поставщика Hyper-V WMI, поставщика Win32. , поставщик реестра и поставщик SNMP.
Инфраструктура WMI — это компонент операционной системы Microsoft Windows, известный как служба WMI (winmgmt). Ядро WMI и репозиторий WMI являются двумя частями инфраструктуры WMI.
Репозиторий WMI представляет собой иерархическое хранилище данных, организованное пространствами имен WMI, часто известное как Общая информационная модель (CIM). Служба WMI устанавливает ряд пространств имен при запуске системы, включая корневое пространство по умолчанию, rootcimv2 и корневую подписку.
Кроме того, служба создает набор определений классов по умолчанию, который включает системные классы Win32 и WMI. Другие пространства имен WMI могут быть созданы дополнительными поставщиками WMI, и каждое пространство имен содержит несколько объектов WMI.
Служба WMI действует как посредник между поставщиками, управляющими приложениями и репозиторием WMI. В репозитории хранятся только статические данные об объектах, например классы, определенные провайдерами. WMI динамически получает большую часть данных от поставщика, когда клиент запрашивает их.
Потребитель WMI — это управляющее приложение или сценарий, взаимодействующий с инфраструктурой WMI. Используя COM API для WMI или Scripting API для WMI, программа управления может запрашивать, детализировать данные, запускать методы поставщика и подписываться на события.
WMI создает стандартизированный интерфейс для удаленного и локального получения данных управления. Единый интерфейс абстрагируется от интерфейсов прикладного программирования (API) операционной системы. Это позволяет приложениям и сценариям собирать данные управления без необходимости знать об API операционной системы.
Как выполнить запрос WMI?
Обычно существует два типа запросов, используемых для извлечения информации из репозитория WMI:
Синхронный запрос: это запрос, который контролирует работу вашего приложения на протяжении всего запроса. Это проще, чем асинхронный вызов, поскольку требуется только один вызов интерфейса. Однако для больших поисков или сетевых запросов это может привести к зависанию вашего приложения.
Асинхронный запрос: когда скорость системы или сети будет зависеть от запроса большой группы данных, предпочтительнее использовать асинхронный запрос.
WQL (язык запросов WMI)
Одним из популярных методов запроса WMI является язык запросов WMI.
SQL (язык структурированных запросов) используется в среде базы данных, а WQL используется в WMI. Они оба имеют схожую синтаксическую структуру.
Select, From и Where — основные операторы WQL, которые используются для запуска запроса.
Типичный запрос WMI начинается с выбора всех свойств из класса WMI с помощью команды «Выбрать». Звездочка («*») используется для выбора каждого свойства из класса WMI. Можно использовать ключевое слово «От», чтобы указать класс WMI для запроса после выбора свойств (одно или несколько свойств или все из них). Вы можете проверить точный синтаксис в шпаргалке SQL.
WQL можно запустить с помощью WMI Tester (wbemtest.exe), который по умолчанию устанавливается вместе с операционной системой Windows. Запросы W MI также можно выполнять с помощью Windows PowerShell, VBScript и языка C.
Тип запросов WQL
Запросы WQL используются для получения трех различных типов информации.
Объектные запросы: С помощью этих запросов можно получить информацию о системных ресурсах Windows.
Запросы событий: эти запросы используются для отслеживания изменений в журналах событий, инициации процессов, состояния служб, доступности компьютеров или объема свободного места на диске, а также других сущностей или событий.
Запросы схемы: эти запросы используются для получения сведений о структуре схемы WMI.
Выполнение запроса
Давайте посмотрим, как выполнить объектный запрос.
Инструмент WMI Tester запускается через командную строку путем ввода wbemtest.exe.
Чтобы подключиться к пространству имен WMI, которое содержит класс, который вы хотите запросить (в большинстве случаев RootCimv2): щелкните вкладку подключения.
Чтобы выполнить запрос, щелкните вкладку «Запрос», как показано ниже:
Затем введите запрос, для которого вы хотите получить информацию. Например, давайте получим все процессы, запущенные в локальной системе, выполнив:
выберите * Из Win32_process
После нажатия на вкладку «Применить» вы получите следующие результаты
Вышеупомянутое выполнение на основе графического интерфейса также может быть выполнено в командной строке через PowerShell:
В платформе PowerShell для получения списка всех процессов win_32 используется следующий код:
Get-WmiObject -Class Win32_Process
Чтобы получить все параметры запроса PowerShell, посетите страницу управления Microsoft PowerShell.
Чтобы выполнить этот запрос на языке VBScript и C, страница документации Microsoft предоставит полную информацию.
Еще один способ запроса репозитория WMI — через команду 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 Service Sensor с PRTG Nagios XISapien WMI ExplorerFree Tools — WMI Explorer, Adrem Free WMI Tools
Как устранить проблемы с WMI
При попытке доступа к локальным или удаленным данным WMI в приложении или сценарии вы можете увидеть ошибки, начиная от отсутствия классов и заканчивая нарушениями прав доступа. Ознакомьтесь с руководством по устранению неполадок Microsoft WMI, чтобы найти решения таких ошибок.
Заключение
В целом инструментарий управления Windows — это мощный инструмент, который можно использовать для управления широким спектром различных функций, связанных с системой Windows. WMI может быть очень полезным инструментом для всех, кто имеет дело с системами Windows, несмотря на то, что поначалу он может показаться пугающим.
На этой странице :
Что такое служба инструментария управления Windows?
Инструментарий управления Windows, также называемый WMI, представляет собой набор спецификаций от Microsoft, которые можно использовать для консолидации управления приложениями и устройствами в сети. W MI работает как служба, и эта служба называется службой инструментария управления Windows.
Если вам необходимо управлять различными операционными средами Windows, включая удаленные системы, хорошим выбором будет служба инструментария управления Windows. Более того, это может сократить расходы на техническое обслуживание и управление компонентами корпоративной сети.
Как запустить/остановить службу инструментария управления Windows?
Служба winmgmt.exe позволяет запускать WMI на локальном ПК. Более того, WMI запускается автоматически при запуске системы или автоматически, когда первое приложение или сценарий управления/мониторинга ищет подключение к пространству имен WMI.
Вот как запустить службу инструментария управления Windows:
Шаг 1. Нажмите Win + S одновременно, чтобы вызвать панель поиска.
Шаг 3. Скопируйте и вставьте net start winmgmt и нажмите Enter.
Другие службы, зависящие от службы инструментария управления Windows, такие как узел агента SMS или брандмауэр Windows, не будут запускаться автоматически автоматически.
чистая остановка winmgmt
Любые службы, зависящие от службы инструментария управления Windows, также будут остановлены, например узел агента SMS или брандмауэр Windows.
Как восстановить службу инструментария управления Windows?
Шаг 3. На левой панели разверните «Журналы Windows» и щелкните правой кнопкой мыши «Система», чтобы выбрать «Очистить журнал» в раскрывающемся меню.
Шаг 4. Как только появится журнал событий, щелкните правой кнопкой мыши значок системы и выберите «Очистить все события».
Шаг 5. После нажатия кнопки «Очистить все события» вы увидите сообщение о том, что вы можете сохранить содержимое этого журнала перед его очисткой. Нажмите «Сохранить и очистить», чтобы сохранить файл журнала, а затем очистить его.
Удалить поврежденные файлы и повторно активировать службу
Шаг 2. Прокрутите вниз, чтобы найти Сервис, и щелкните его правой кнопкой мыши.
Шаг 3. В разделе «Службы» щелкните правой кнопкой мыши «Инструментарий управления Windows», чтобы выбрать «Свойства».
Шаг 4. В общем, остановите сервисный статус.
Шаг 5. После того, как служба и связанные с ней службы будут остановлены, перейдите по этому пути — C:WindowsSystem32webmRepository и щелкните его правой кнопкой мыши, чтобы выбрать «Удалить».
Шаг 6. Перезагрузите компьютер, после чего произойдет принудительное пересоздание необходимого для службы.
WMI расшифровывается как Инструментарий управления Windows. Разработанная Microsoft, эта инфраструктура стандартизированного управления данными и информацией не зависит от устройства. Начиная с Windows 2000 WMI предустанавливается вместе с операционными системами Windows.
WMI — это реализация Майкрософт системы управления предприятием через Интернет (WBEM), которой управляет Целевая группа по распределенному управлению (DMTF). W BEM устанавливает стандарты, чтобы разрешить доступ к данным из неоднородных технологий и устройств в рамках стандартизированной архитектуры. W BEM использует общую информационную модель (CIM) в качестве схемы для определения информации об объектах.
Хотя CIM и не является непосредственно частью WMI, он является независимым от поставщика стандартом для представления управляющей информации различных устройств. Он также поддерживается DMTF.
WMI использует эту схему для хранения информации в репозитории WMI. Он структурирован таким образом, что управляемую среду можно рассматривать как взаимосвязанные системы, каждая из которых состоит из отдельных элементов. Предопределенный набор классов и свойств создает структуру, на основе которой строятся отдельные поставщики.
Для работы в качестве сервера устройство должно быть настроено на прослушивание запросов от клиентов по сетевому соединению. Эта функциональность может существовать как часть операционной системы в виде установленного приложения, роли или их комбинации.
Например, операционная система Microsoft Windows Server предоставляет функциональные возможности для прослушивания клиентских запросов и ответа на них. Дополнительно установленные роли или службы увеличивают количество типов клиентских запросов, на которые может отвечать сервер. В другом примере веб-сервер Apache отвечает на запросы интернет-браузера через дополнительное приложение Apache, установленное поверх операционной системы.
Когда клиенту требуются данные или функции от сервера, он отправляет запрос по сети. Сервер получает этот запрос и отвечает соответствующей информацией. Это модель запроса и ответа в сети клиент-сервер, также известная как модель вызова и ответа.
Сервер часто выполняет множество дополнительных задач в рамках одного запроса и ответа, включая проверку личности запрашивающего, обеспечение того, чтобы клиент имел разрешение на доступ к запрошенным данным или ресурсам, а также правильное форматирование или возврат требуемых данных. ответ ожидаемым образом.
По мере работы устройств в сети различные настройки, параметры и состояния могут быть измерены и сгенерированы в любой момент времени. Например, у жесткого диска есть общая емкость хранения, используемая емкость хранения, объем свободной памяти или внутренняя температура. Эти значения являются динамическими и меняются в зависимости от использования системы. В любой данный момент показания существуют независимо от того, замечает их кто-либо или нет.
Платформа WMI предлагает унифицированный способ создания и выполнения сценариев, которые считывают и в некоторых случаях могут изменять такие настройки без необходимости установки дополнительных программных агентов или мониторов. В случае жесткого диска поставщик WMI сможет ответить на запрос температуры жесткого диска, а также отправить предупреждение диспетчеру объектов WMI, если температура превысит заданный уровень.
Кроме того, для управляющих приложений платформа WMI предлагает интерфейс прикладного программирования (API) на уровне диспетчера объектов WMI, поэтому нет необходимости разбираться в особенностях отдельного поставщика WMI. Приложению управления нужно только вызвать диспетчер объектов, а не напрямую запрашивать, например, сам жесткий диск.
Когда устройство запрашивается или инициируется событие, данные проходят через стандартную архитектуру управляемого устройства через его поставщика WMI к диспетчеру объектов WMI и далее к потребителю WMI. Вся эта инфраструктура стандартизирована для устройств и платформ, так что любое программное обеспечение для управления предприятием с поддержкой WMI может получить доступ к данным, собранным на любом устройстве с поддержкой WMI, без необходимости знать что-либо об устройствах или структуре сети между ними. WMI доступен на любом текущем компьютере с Windows, поэтому им можно управлять через WMI.
Сервис WMI
WMI является интегрированной частью операционной системы Windows. Инфраструктура WMI реализована в Windows как служба WMI. Служба WMI действует как посредник между поставщиками WMI, репозиторием WMI и управляющими приложениями. Служба WMI запускается с отображаемым именем Windows Management Instrumentation под именем службы winmgmt. Он запускается автоматически при запуске, а если он остановлен, он автоматически запускается, когда управляющее приложение или сценарий запрашивает подключение к любому пространству имен WMI.
Управляемые объекты
Управляемый объект — это любой логический или физический компонент или служба, которыми можно управлять через WMI. Это могут быть процессоры, сетевые адаптеры, операционные системы, службы, приложения, диски, память или любое другое сетевое оборудование.
Как правило, если к рассматриваемому параметру можно получить доступ через другой инструмент Windows, такой как монитор производительности, то к той же информации можно получить доступ через WMI.
Поставщики WMI
Поставщик WMI — это объект, который отслеживает, считывает и собирает любые данные, которые он запрограммировал для отслеживания на конкретном управляемом объекте. Как и драйверы устройств, некоторые мониторы встроены в операционную систему, тогда как другие реализованы сторонними производителями или программно, обычно через C/C++, Visual Basic, VBScript или PowerShell. Доступ к провайдеру также можно получить через командную строку (Командная строка интерфейса управления Windows или WMIC).
Мониторы могут быть общими или специфичными для устройства. Сам монитор ничего не делает, кроме как наблюдает или отслеживает данные по мере их создания. Мониторы не регистрируют и не хранят данные, хотя их можно настроить для записи данных в файл журнала или в средство просмотра событий, если выполняется определенное условие.
В Windows имеется множество встроенных поставщиков WMI, включая поставщика Active Directory, поставщика WMI данных конфигурации загрузки (BCD), поставщика распределенной файловой системы (DFS), поставщика журнала событий, поставщика Hyper-V WMI, поставщика Win32. , поставщик реестра и поставщик SNMP. Поставщик SNMP сопоставляет объекты SNMP MIB с классами WMI CIM. Это дает возможность использовать WMI даже на устройствах, отличных от Windows, через их встроенный SNMP.
Поставщики WMI отвечают на прямые запросы от управляющих приложений или сценариев, а также на запрограммированные события. Для настройки события требуется триггер события и подписчики событий. Триггер устанавливается путем определения того, когда событие становится отчетным или инициируется. Например, событие может инициироваться, когда объем свободного места на диске падает ниже определенного значения. Во время работы провайдер WMI просто отслеживает объем свободного места на диске. Когда сумма падает ниже заданного порога, провайдер WMI уведомляет диспетчер объектов CIM. Затем CIM Object Manager направляет оповещение предопределенным потребителям событий или подписчикам, которыми обычно являются приложения управления предприятием или журналы событий.
Каждый провайдер WMI реализует функциональность своих классов. Классы содержат события и свойства, позволяющие фактически собирать и настраивать данные. Системные классы WMI — это предопределенные классы, обеспечивающие основные функции WMI. Эти классы начинаются с двойного подчеркивания, например __SystemEvent, который представляет собой системное событие. Существуют также классы MSFT, которые являются либо классами поставщиков политик, либо классами устранения неполадок WMI. Классы C IM можно использовать при создании новых классов. Новые классы наследуют свойства своего родительского класса CIM.
Существуют также стандартные потребительские классы. Они используются для запуска сценариев или программ при возникновении инициирующего события. Одним из часто используемых стандартных потребительских классов является ActiveScriptEventConsumer, который запускает сценарий при получении ответа. Это способ создать автоматический ответ на определенное событие или ситуацию, например на отправку сообщения, остановку или запуск службы или даже на перезагрузку и завершение работы системы или компонента.
Некоторые классы имеют методы, предлагающие конкретные данные, которые можно отслеживать или изменять. Например, класс Win32_Service имеет методы для остановки и запуска служб. Доступ к этим методам можно получить через приложение для сценариев или через приложение для управления сетью.
Репозиторий WMI — это база данных, в которой хранятся статические данные, относящиеся к WMI. Динамические данные, отслеживаемые поставщиками WMI, не хранятся в репозитории. Чтобы сохранить динамические данные, они должны быть захвачены поставщиком WMI и извлечены или переданы приложением управления WMI или зарегистрированы через класс поставщика WMI. W MI использует репозиторий объектов, совместимый с CIM.
Диспетчер объектов CIM
Диспетчер объектов CIM действует как посредник между управляющим приложением и поставщиками WMI. Доступный со стороны приложения с помощью WMI API, диспетчер объектов перенаправляет запросы данных поставщикам WMI и получает ответ, прежде чем перенаправить информацию обратно запрашивающему управляющему приложению.
WMI API
API обеспечивает доступ к инфраструктуре WMI для приложений, использующих WMI. Эти приложения выполняют вызовы API, которые передаются в диспетчер объектов CIM, а затем отправляются поставщикам. Они отвечают через классы и методы с такими данными, как время безотказной работы системы или количество запущенных процессов.
Потребитель WMI
Потребитель отправляет запросы и получает информацию от поставщика WMI через диспетчер объектов WMI. Как правило, потребителем WMI является либо приложение для мониторинга, такое как PRTG Network Monitor, управляющее приложение, либо сценарий, например сценарий PowerShell, который запрашивает значения в удаленной системе перед выполнением каких-либо действий, таких как обновление программного обеспечения или запись файла. .
На первый взгляд кажется, что PowerShell мало поддерживает WMI. Однако на самом деле один командлет Get-WmiObject позволяет получить доступ к большинству параметров WMI. Командлет Get-WmiObject может использовать параметр -ComputerName для доступа к удаленному компьютеру. Например, Get-WmiObject -Class Win32_service -ComputerName Accounting235 получит список служб (и их текущее состояние), работающих на удаленном компьютере с именем Accounting235.
Хотя WMI можно использовать с помощью нескольких языков сценариев, включая PowerShell, у него есть собственный интерфейс командной строки. WMIC совместим с существующими оболочками, включая стандартную командную строку Windows. Чтобы использовать, просто введите wmic и команду.
Команда SET может изменять или записывать определенные параметры. Используя /? switch выводит список доступных для записи свойств. Например, можно установить текущий часовой пояс с помощью команды set os.
Теперь Microsoft предлагает инфраструктуру управления Windows (MI), которая является последней версией WMI. По данным Microsoft, MI полностью совместим с более ранними версиями WMI и обеспечивает сокращение времени разработки и более тесную интеграцию с PowerShell.