Приложение wmi. WMIDiag в деле. Что такое WMIDiag

Приложение wmi. WMIDiag в деле. Что такое WMIDiag

18.04.2019

Windows Management Instrumentation

WMI - это одна из базовых технологий для централизованного управления и слежения за работой различных частей компьютерной инфраструктуры под управлением платформы Windows.

Необходимые службы

Служба удаленного управления Windows (WS-Management)

WMI – это протокол прикладного уровня, работающий поверх DCOM . Соответственно, открывать порты необходимо именно для DCOM , каких-либо своих специальных портов у WMI нет. DCOM , в свою очередь, протокол прикладного уровня, работающий поверх удалённого вызова процедур (Remote procedure call, RPC ). Вместе связка WMI-DCOM-RPC образует фундамет удалённого управления Windows . RPC использует порт TCP 135 на стороне удалённого ПК

для открытия RPC на сервере необходимо либо целиком открыть порт TCP 135 для входящих соединений, либо, если позволяет межсетевой экран, открыть порт TCP 135 только для службы RpcSs.

С открытием DCOM всё несколько сложнее. DCOM требует дополнительное TCP -соединение поверх RPC . Для подобных соединений TCP -порты на серверной стороне выделяются динамически. Сначала клиент по TCP 135 запрашивает номер порта для соединения с DCOM -сервером. Сервер выделяет клиенту новый порт и отправляет его номер в ответ. Клиент получает номер и создаёт второе TCP -соединение на порт с полученным номером. По умолчанию, DCOM может использовать весь диапазон от 1024 до 65535. Поэтому чтобы разрешить DCOM в общем случае приидётся … открыть все TCP -порты от 1024 и выше.

Во-вторых, если сетевой экран не позволяет назначать правила службам, то можно ограничить диапазон портов, разрешённых для DCOM . Для этого открываем Администрирование – Службы компонентов (или в командной строке набираем dcomcnfg.exe ). В открывшейся программе находим ветку «Мой компьютер» и открываем её свойства

В свойствах открываем вкладку «Набор протоколов», там, в свою очередь, открываем свойства «TCP/IP с ориентацией на подключения»

В свойствах TCP/IP по умолчанию – пустой список. В него можно добавить конкретный диапазон портов, которые будут использоваться DCOM . Какие именно порты выбрать – решать вам. Главное, чтобы не было других стандартных служб, уже занявших выбранные порты. Мне встречались рекомендации открывать не менее 1000 портов, так как очень многие системные программы используют DCOM . Так на скриншоте ниже я указываю, что DCOM должен работать по диапазону портов 20000-21000 .

После этого нужно перезагрузить сервер (перезапустить отдельно DCOM нельзя, слишком много на него завязано), и DCOM станет работать только по указанным портам.

Поскольку WMI-DCOM-RPC активно используются инфраструктурой Windows, то все приличные программные сетевые экраны имеют предустановки для них. В частности, брандмауэр Windows в режиме повышенной безопасности имеет группу правил «Инструментарий управления Windows (WMI)», состояющую из всего вышеперечисленного: TCP 135 для RpcSs, все порты для Winmgmt и unsecapp.exe. Включить эти правила можно из командной строки.

В Windows 2000 реализован ряд функций, которые упрощают процесс управления операционной системой. К числу новых возможностей относится и Windows Management Instrumentation (WMI) - интерфейс, обеспечивающий взаимодействие с компонентами системы, в общем случае доступными лишь через особые механизмы. WMI можно использовать в различных целях, в частности для управления компьютерами с помощью сценариев.

Одной из причин успешного старта Windows NT в начале 90-х была относительная простота использования операционной системы. Пользователи, освоившие Windows 3.1, имели все основания надеяться, что смогут управлять простыми сетями на базе NT. Возможно, сегодня это звучит невероятно, но не надо забывать о том, что NT 3.1 все-таки намного проще, чем Windows 2000. Одного взгляда на панель управления NT было достаточно, чтобы получить представление о ее возможностях.

По мере развития системы интерфейс пользователя стал еще более дружественным. Каждая процедура Windows 2000 снабжена программой-мастером, а каждый объект имеет список свойств Properties с закладками. К диалоговому окну ведет несколько различных путей, а с помощью консоли MMC можно создавать настраиваемые инструментальные наборы с новыми функциями, в том числе разработанными независимыми компаниями.

По мнению опытных администраторов, простой графический интерфейс часто слишком медлителен. Некоторые задачи можно решить из командной строки, но ее возможности не столь широки, как у графических инструментов. Часть операций Windows 2000 выполняется быстрее, если обратиться к тем же интерфейсам управления, которые используются графическими инструментами, но не через пользовательский интерфейс, а посредством сценариев. Благодаря WMI доступ почти к любому компоненту операционной системы можно получить с помощью одного интерфейса и языков сценариев. Например, без WMI невозможно напрямую обратиться к Win32 API, используя VBScript.

Что такое WMI?

WMI - ядро системы управления Windows 2000 и полезное дополнение к другим операционным системам Win32. WMI обеспечивает интерфейс к элементам операционной системы для инструментов MMC и сценариев с помощью CIMOM (Common Infor-mation Model Object Manager) - базы данных объектов, представляющих эти элементы. Благодаря инструментам и сценариям WMI не нужно использовать различные API для обращения к разным компонентам операционной системы. Эти компоненты стыкуются через WMI, как показано на Рисунке 1, а инструменты и сценарии могут читать и записывать данные с помощью WMI.

Windows 2000 и Windows 98 совместимы с WMI, но его можно установить и на машинах с Windows 95 и NT 4.0 с пакетом исправлений Service Pack 4 (SP4) или более поздних версий. Более подробно об инсталляции WMI на компьютерах с NT 4.0 и Windows 95 рассказано во врезке «WMI для NT 4.0 и Windows 95». Таким образом, для дистанционного управления с помощью WMI вовсе не обязательно работать с Windows 2000. Но, безусловно, нельзя обратиться к Windows 2000 Perfor-mance Monitor с удаленного компьютера, если сценарий WMI работает на машине с Windows 9x, не имеющей Performance Monitor.

Как уже упоминалось, благодаря WMI можно использовать единый интерфейс для доступа ко многим компонентам операционной системы. В результате с помощью единственного запроса можно собирать информацию разнообразного типа и упростить поиск взаимосвязей между разнородными данными. Если локальная и удаленная машины совместимы с WMI, то этот интерфейс можно использовать для дистанционного управления компьютерами. Но не все утилиты командной строки Windows 2000 имеют синтаксис, позволяющий задействовать их на удаленной машине.

WMI - реализация модели управления предприятием на базе Web, Web-Based Enterprise Management (WBEM), созданной рабочей группой по управлению распределенными системами Distributed Management Task Force (DMTF) при участии примерно десятка компаний, таких, как Com-paq, Sun Microsystems и Microsoft. Задачей WBEM была разработка стандартного набора интерфейсов для управления средой предприятия. Важные компоненты модели WBEM - модель данных (или средство описания и определения объектов), спецификация кодирования и транспортная модель для передачи данных между клиентом и сервером.

В качестве модели данных WBEM используется модель Common Information Model (CIM). CIM представляет собой стандартную систему именования, или схему (schema), для физических и логических компонентов компьютера, таких, как логический раздел жесткого диска, экземпляр исполняемого приложения или кабель. Схема нужна для того, чтобы любой пользователь мог обращаться ко всем элементам CIM, используя одни и те же термины для описания этих элементов и связи с ними.

CIM - объектно-ориентированная схема, поэтому для описания ее компонентов используется объектно-ориентированная терминология. CIM содержит классы, которые представляют собой шаблоны управляемых элементов. Объект - экземпляр класса, представляющий базовый компонент системы. Пространство имен - набор классов для специализированной области управления. Классы содержат свойства и методы.

Существует три уровня CIM. Базовая модель (core model) содержит определения классов, общих для всех областей управления. Общая модель (common model) хранит определения классов, общих для определенных областей управления, но независимых от особенностей той или иной операционной системы или машины; данная модель служит основой для схем, ориентированных на конкретную технологию. Модели расширений (extension models) содержат определения классов, специфичные для конкретной операционной системы или другой технологии.

WMI - модель расширения Micro-soft для платформы компонентов Win32, она расширяет спецификацию CIM 2.0. Для обращения к классу и свойству WMI используется формат extensionprefix_classname.propertyname. Так, в метке Win32_Compu-terSystem.Name Win32 - префикс классов расширения WMI, расположенных в пространстве имен cimv2 схемы CIM; ComputerSystem - класс, а Name - свойство.

Множество команд сценариев WMI связано с установкой и чтением свойств. Пока существует немного методов WMI, но со временем их станет больше, как и методов CIM.

Комплекс инструментов разработки WMI

Классы CIM и Win32 можно просмотреть с помощью комплекта инструментальных средств разработки SDK WMI. Его можно загрузить по адресу: . Размер файла весьма велик - 8 Мбайт.

Полный список системных требований приведен в файле README по адресу: http://www.msdn.microsoft.com/downloads/ sdks/wmi/readme.asp , ниже перечислены основные из них. Необходимо иметь операционную систему Windows 2000 или NT 4.0 SP4 или более поздней версии. SDK нельзя установить на системах Windows 9x, даже если на данной платформе можно инсталлировать WMI. Для работы с элементами ActiveX необходим браузер Microsoft Internet Explorer (IE) 5.0. Другие минимальные требования - процессор Pentium, 32 Мбайт оперативной памяти, 40 Мбайт на диске и видеокарта с количеством цветов не менее 256 при разрешении 800x600. Этим системным требованиям удовлетворяет любой компьютер, работающий под Windows 2000. Если в машине нет сетевой платы, то CIMOM не сможет функционировать в качестве службы, а только лишь как приложение. Для этого нужно запустить исполняемый файл winmgmt.exe, который находится в базовом каталоге WMI, \%systemroot%system32wbem.

Установить SDK могут только члены группы Administrators. Процедура установки проста. Для начала необходимо запустить файл wmisdk.exe. Следует указать папку, в которой будут размещены файлы (по умолчанию C:program fileswmi). Затем нужно выбрать устанавливаемые компоненты. По умолчанию инсталлируются все компоненты, за исключением SNMP. На последней странице мастера нужно щелкнуть на кнопке Finish. Перезапускать компьютер не требуется. После того как все нужные файлы будут скопированы программой инсталляции в выбранную папку, в пункте меню Programs появится новая программная группа - WMI SDK.

После завершения установки нужно щелкнуть на кнопке Start, выбрать Programs и WMI SDK и открыть WMI CIM Studio. Когда CIM Studio предложит соединиться с пространством имен и покажет выбранное по умолчанию значение rootcimv2, следует щелкнуть на кнопке OK. Обладателю учетной записи Administrator следует вновь щелкнуть OK, чтобы зарегистрироваться в качестве текущего пользователя. Всем, кто вошел в систему под иным именем, необходимо зарегистрироваться в качестве Administrator.

Затем нужно выбрать на данном компьютере объект управления: диск C. Точное имя этого компонента в CIM или WMI неизвестно, поэтому, вместо того чтобы просматривать сотни классов в списках CMI Studio, я щелкнула на кнопке Find (пиктограмма «бинокль» в верхней части левой панели). В диалоговом окне Search for Class, показанном на Экране 1, я ввела ключевое слово, которое, на мой взгляд, с большой вероятностью должно присутствовать в имени класса для диска C, и нажала Go!. Поскольку мне нужно было найти именованный раздел и я знала, что в операционных системах Windows такие разделы называются логическими дисками или логическими накопителями, я вела поиск по ключевому слову logical. Можно провести поиск по слову disk, но в таком случае придется просматривать гораздо больше результатов.

Обнаруженные классы показаны на Экране 1. Я выбрала Win32_Logical-Disk и щелкнула OK, после чего на экране появилось окно, показанное на Экране 2. Почему не CIM_Logical-Disk? Как уже упоминалось, Win32 - префикс для любых объектов, управляемых WMI. Если выбрать CIM_LogicalDisk и попытаться отобразить экземпляры, то не будет получено никакой конкретной информации об имеющихся логических дисках - каждому логическому устройству будет соответствовать запись Win32_Logi-calDisk. В правой панели показаны свойства класса Win32_LogicalDisk. Следует обратить внимание, что значения свойств пусты, так как мы рассматриваем класс, а не конкретный экземпляр класса. Чтобы вывести на экран экземпляры класса Win32_LogicalDisk, нужно щелкнуть на кнопке Instances в верхней части правой панели (четвертая кнопка справа).

В результате на экран выводится окно, в правой панели которого перечислены все экземпляры логических дисков на данной машине, в том числе сетевые логические накопители. Я щелкнула на экземпляре с ID устройства «C:». На закладках правой панели окна, показанного на Экране 3, отображаются свойства и методы выбранного экземпляра. Имя выбранного логического диска показано в верхней строке правой панели.

Изменить свойства или применить методы можно с помощью сценария. Чтобы получить информацию о свойствах, нужно выбрать класс Win32_LogicalDisk или экземпляр Win32_LogicalDisk.DeviceID=«C:» и щелкнуть на кнопке Help.

Составление сценария

Теперь, когда мы познакомились с классом Win32_LogicalDisk и его свойствами, я хочу показать, как использовать эту информацию в сценарии. Если на компьютере установлен комплект ресурсов Microsoft Windows 2000 Resource Kit, то файл listfreespace.vbs по умолчанию находится в папке program files esource kit. Данный сценарий опрашивает все объекты класса Win32_LogicalDisk, извлекая значения двух свойств: DeviceID (буква накопителя) и FreeSpace (число свободных байтов на диске). Если на компьютере дисковод обозначен буквой A, а привод компакт-дисков - буквой D, то результат работы listfreespace.vbs будет выглядеть примерно так:

A: not available C: 8,243,381,248 bytes D: not available G: 4,776,943,616 bytes

Ту же информацию можно получить с помощью более короткого сценария getfree.vbs (см. Листинг 1). Сценарий снабжен подробными комментариями. При вызове сценария пользователь указывает букву диска, и getfree.vbs сообщает объем свободного пространства и тип файловой системы данного устройства. Например, если ввести с клавиатуры моего ноутбука

Getfree.vbs c:

появится сообщение, приведенное на Экране 4.

Экран 4. Сообщение getfree.vbs.

Итак, я рассказала о том, что такое WMI и как найти на компьютере управляемые объекты. Конечно, прочитав статью, нельзя немедленно превратиться в специалиста по сценариям WMI, но теперь вы знаете, какие компоненты следует использовать при написании сценариев и где их отыскать.

КРИСТА АНДЕРСОН - независимый автор и консультант, редактор журнала Windows NT Magazine. Ее последняя книга - «Mastering Local Area Networks». С ней можно связаться по адресу: [email protected] .

WMI для NT 4.0 и Windows 95

Интерфейс Windows Management Instrumentation (WMI) 1.5 уже инсталлирован на компьютерах с Windows 2000 и Windows 98 как часть ядра операционной системы, но он не относится к числу встроенных компонентов Windows NT 4.0 и Windows 95. Чтобы выполнить сценарии на системе NT 4.0 или Windows 95, нужно установить WMI, даже если эти сценарии предназначены для управления удаленными компьютерами.

WMI 1.5 для NT 4.0 Service Pack 4 (SP4) и более поздних версий и Windows 95 можно загрузить по адресу: http://www.msdn.microsoft.com/downloads/ sdks/wmi/download.asp . Если планируется установить WMI как на системах NT 4.0, так и Windows 95, можно загрузить версию, совместимую с обеими платформами. Установив программы, нужно запустить wmicore.exe, чтобы начать работу небольшого мастера, который предлагает принять условия лицензионного соглашения End User License Agreement (EULA) и подтвердить, что вам известно о невозможности удаления однажды установленного WMI. Программа инсталляции копирует несколько файлов на компьютер пользователя. После перезагрузки на системе появится новая папка (\%systemroot%systemwbem на машинах Windows 95). Функциональность WMI зависит от платформы: например, в Windows 95 не предусмотрена регистрация событий, поэтому через WMI нельзя обратиться к журналам событий Windows 95, тогда как на компьютере Windows 2000 или NT 4.0 это возможно.

Не раз сталкивался с проблемами в работе службы WMI и ее компонентах. Наличие проблем в подсистеме WMI является критичным с точки зрения нормального функционирования системы, поэтому администратору приходится прибегать к тем или иным трюкам, позволяющим восстановить работоспособность WMI. В этой статье мы опишем достаточно простую методику диагностирования и устранения неполадок в службе WMI.

О наличии проблем с WMI может свидетельствовать широкий спектр ошибок:

  • Ошибки обработки WMI запросов в системных журналах и логах приложений
  • Ошибки , завязанные на WMI (некорректная работа , и пр.)
  • Ошибки в работе / невозможность установки агентов SCCM/SCOM
  • Ошибки в работе скриптов (vbs или powershell), использующих пространство имен WMI

В первую очередь нужно проверить имеется ли в системе служба Windows Management Instrumentation (Winmgmt) и включена ли она.

Если служба присутствует и находится в состоянии Started, рекомендуется протестировать работоспособность WMI, обратившись к ней с помощью простого wmi-запроса. С помощью Powershell, например, это можно сделать так:

Get-wmiobject Win32_OperatingSystem

Если при выполнении простейшего WMI-запроса система возвращает ошибку (на скриншоте приведен пример корректного ответа службы WMI), вероятно имеет место некорректное функционирование сервиса WMI или ряда его подсистем, повреждение репозитория WMI или другие проблемы.

Утилита WMIDiag

Для «тонкой» диагностики службы WMI существует официальная утилита Microsoft — WMIDiag (Microsoft WMI Diagnosis). Утилита представляет собой vbs скрипт, который проверяет различные подсистемы WMI и записывает собранную информацию в лог файлы (по умолчанию логи находятся в каталоге %TEMP% — C:\USERS\%USERNAME%\APPDATA\LOCAL\TEMP\ ). Получившийся отчет состоит из файлов, имена которых начинаются с WMIDIAG-V2.1 и включает в себя следующие типы фалов:

  • .log файлы содержат подробный отчет об активности и работе утилиты WMIDiag
  • .txt файлы содержат итоговые отчеты о найденных ошибках, на которые стоит обратить внимание
  • В.csv файлах содержится информация, нужная для долгосрочного анализа работы подсистемы WMI

Совет . В 64 битных версиях Windows wmidiag нужно запускать так:

C:\windows\System32\cscript.exe wmidiag.vbs

в противном случае появится ошибка: WMIDiag must be run from native 64-bit environment. It is not supported in Wow64 .

После окончания работы утилиты WMIDiag администратор должен изучить полученные файлы логов, проанализировать и попытаться исправить найденные ошибки.

В общем случае, WMIDiag может дать информацию по исправлению частных ошибок в WMI , но в большинстве случаев процесс это довольно трудоемкий и стоит потраченного времени только при решении инцидентов в критичных системах (как правило, на продуктивных серверах). Для массового сегмента рабочих станций пользователей гораздо проще «бить по площадям» и решать проблему работы WMI более радикально.

Перерегистрация библиотек WMI и перекомпиляция mof файлов

Следующий скрипт представляет собой «мягкий» вариант восстановления работоспособности службы WMI на отдельно взятом компьютере (выполняется перерегистрация dll библиотек и службы WMI, перекомпилируются mof файлы). Данная процедура является безопасной и ее выполнение не должно привести к каким-либо новым проблемам с системой.

Sc config winmgmt start= disabled net stop winmgmt cd %windir%\system32\wbem for /f %%s in ("dir /b *.dll") do regsvr32 /s %%s wmiprvse /regserver winmgmt /regserver sc config winmgmt start= auto net start winmgmt for /f %%s in ("dir /b *.mof") do mofcomp %%s for /f %%s in ("dir /b *.mfl") do mofcomp %%s

Указанные команды можно выполнить путем простой вставки в окно командой строки, либо сохранить код в bat файле и запустить его с правами администратора. После окончания работы скрипта, систему нужно перезагрузить и вновь проверить работу WMI.

Пересоздание репозитория (хранилища) WMI

В том случае, если предыдущий способ не помог, придется перейти к более «жесткому» способу восстановления работоспособности службы WMI, заключающегося в пересоздании хранилища.

WMI репозиторий (хранилище) находится в каталоге %windir%\System32\Wbem\Repository и представляет собой базу данных, в которой содержится информация о метаданных и определениях WMI классов. В некоторых случаях репозитория WMI может содержать статическую информацию классов. При повреждении репозитория WMI, в работе службы Windows Management Instrumentation (Winmgmt) могут наблюдаться ошибки вплоть до полной невозможности ее запустить.

В том случае, если вы подозреваете, что репозиторий WMI поврежден, имейте в виду, что его пересоздание это последняя вещь, к которой нужно прибегнуть только в том случае, если никакие другие операции реанимировать WMI не помогают.

Совет . На практике бывают случаи, когда пересоздание хранилища WMI приводит к проблемам со сторонним софтом. Вызван этот эффект тем, что все записи в базе WMI обнуляются (до состояния чистой системы). Такое ПО, вероятно, придется переустанавливать в режиме восстановления.

В Windows Vista и выше проверить целостность репозитория WMI можно с помощью команды:

Winmgmt /verifyrepository

Если команда возвращает, что база данных WMI находится в неконсистентном состоянии (INCONSISTENT), стоит попробовать выполнить «мягкое» восстановление репозитория:

Winmgmt /salvagerepository

И перезапустить службу wmi:

Net stop Winmgmt net start Winmgmt

Если описанная выше команда не помогла, выполняем сброс репозитория на начальное состояние (hard reset) так:

Winmgmt /resetrepository

В том случае, если команды Winmgmt /salvagerepository и Winmgmt /resetrepository желаемого эффекта не дали, стоит попробовать выполнить «жесткое» пересоздание базы WMI вручную таким сценарием:

Sc config winmgmt start= disabled net stop winmgmt cd %windir%\system32\wbem winmgmt /kill winmgmt /unregserver winmgmt /regserver winmgmt /resyncperf if exist Repos_bakup rd Repos_bakup /s /q rename Repository Repos_bakup regsvr32 /s %systemroot%\system32\scecli.dll regsvr32 /s %systemroot%\system32\userenv.dll for /f %%s in ("dir /b *.dll") do regsvr32 /s %%s for /f %%s in ("dir /b *.mof") do mofcomp %%s for /f %%s in ("dir /b *.mfl") do mofcomp %%s sc config winmgmt start= auto net start winmgmt wmiprvse /regserver

Данный скрипт полностью пересоздает хранилище WMI (старый репозитория сохраняется в каталоге Repos_bakup). После окончания работы скрипта компьютер нужно перезагрузить, после чего протестировать работу службы WMI простым запросом.

В этой статье мы собрали типовые методики позволяющие устранить неполадки в работе службы WMI и ее подсистемах.



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows