Отстраняване на неизправности в WMI

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

Широк спектър от грешки може да показва проблеми с WMI:

  • Грешки при обработката на WMI заявки в системните и приложенията
  • GPO грешки, свързани с WMI (неправилна работа на филтри за политики wmi и т.н.)
  • Грешки в работата / невъзможност за инсталиране на SCCM / SCOM агенти
  • Грешки в скриптове (vbs или powershell) при използване на пространството от имена на WMI

На първо място, трябва да проверите дали системата има услуга за управление на Windows (Winmgmt) и дали тя е включена.

Ако услугата присъства и е в състояние Started, се препоръчва да се тества здравето на WMI, като се осъществява достъп до нея с помощта на обикновена wmi заявка. Например с Powershell това може да стане така:

get-wmiobject Win32_OperatingSystem

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

  • WMIDiag Utility
  • Пререгистриране на WMI библиотеки и прекомпилиране на mof файлове
  • Пресъздаване на WMI хранилище (хранилище)

WMIDiag Utility

За „тънката“ диагностика на услугата WMI има официална помощна програма на Microsoft - WMIDiag (Microsoft WMI Diagnosis). Помощната програма е vbs скрипт, който проверява различни подсистеми WMI и записва събраната информация в лог файлове (по подразбиране регистрационните файлове са в директорията% TEMP% - C: \ USERS \% USERNAME% \ APPDATA \ LOCAL \ TEMP \). Полученият отчет се състои от файлове, чиито имена започват с WMIDIAG-V2.1 и включват следните типове файлове:

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

съвет. В 64-битови версии на Windows wmidiag трябва да се изпълнява така:

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

в противен случай ще се появи грешка: WMIDiag трябва да се стартира от родна 64-битова среда. Не се поддържа в Wow64.

След като помощната програма WMIDiag приключи да работи, администраторът трябва да провери получените файлове в журнала, да анализира и да се опита да поправи намерените грешки.

Като цяло WMIDiag може да предостави информация за коригиране на частни грешки в WMI, но в повечето случаи процесът отнема доста време и струва времето, прекарано само при решаване на инциденти в критични системи (обикновено на производителни сървъри). За масовия сегмент от потребителски работни станции е много по-лесно да „ударите пода“ и да разрешите проблема с WMI по-радикално.

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

Следващият скрипт е „мека“ опция за възстановяване на WMI услугата на един компютър (извършва се пререгистрация на dll библиотеки и WMI услуги, mof файловете се прекомпилират). Тази процедура е сейф и прилагането му не трябва да води до нови проблеми със системата.

sc config winmgmt start = забранено 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 / f %% s in ('dir / b * .mfl') do mofcomp %% s

Тези команди могат да бъдат изпълнени чрез просто вмъкване на команден ред в прозореца или запазване на кода в прилеп файл и го стартиране с права на администратор. След приключване на скрипта, системата трябва да се рестартира и операцията WMI да се провери отново.

Пресъздаване на WMI хранилище (хранилище)

В случай, че предишният метод не помогна, ще трябва да преминете към по-труден начин за възстановяване на WMI услугата, която се състои в възстановяване на хранилището.

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

В случай, че подозирате, че хранилището на WMI е повредено, имайте предвид, че неговото повторно създаване е последното нещо, към което трябва да прибягвате, само ако други операции не реанимират WMI.

съвет. На практика има моменти, когато възстановяването на хранилището на WMI води до проблеми със софтуера на трети страни. Този ефект се причинява от факта, че всички записи в базата данни на WMI се нулират (до състоянието на чиста система). Такъв софтуер може да се наложи да бъде инсталиран отново в режим на възстановяване..

В Windows Vista и по-нови версии можете да проверите целостта на хранилището WMI с помощта на командата:

winmgmt / verifyrepository

Ако командата върне, че базата данни на WMI е в непоследователно състояние (INCONSISTENT), струва си да опитате меко възстановяване на хранилището:

Winmgmt / salvagerepository

И рестартирайте услугата wmi:

net stop winmgmt
нетен старт winmgmt

Ако командата, описана по-горе, не помогна, ние възстановяваме хранилището до първоначалното му състояние (твърд нулиране) по този начин:

Winmgmt / resetrepository

В случай, че командите Winmgmt / salvagerepository и Winmgmt / resetrepository не дадат желания ефект, струва си да опитате да извършите „трудно“ пресъздаване на базата WMI ръчно с този сценарий:

sc config winmgmt start = забранено net stop winmgmt cd% windir% \ system32 \ wbem winmgmt / kill winmgmt / ungserver winmgmt / regserver winmgmt / resyncperf, ако съществува Repos_bakup rd Repos_bakup / s / q преименуване Repository Repr32% sprys scecli.dll regsvr32 / s% systemroot% \ system32 \ userenv.dll за / f %% s в ('dir / b * .dll') направи regsvr32 / s %% s за / f %% s в ('dir / b * .mof ') направи mofcomp %% s за / f %% s в (' dir / b * .mfl ') do mofcomp %% s sc config winmgmt start = auto net start winmgmt wmiprvse / regserver

Този скрипт напълно отново създава WMI хранилище (старият хранилище се съхранява в директорията Repos_bakup). След приключване на изпълнение на скрипта, компютърът трябва да се рестартира и след това да се тества операцията на WMI услугата с обикновена заявка.

В тази статия сме съставили типични техники за отстраняване на проблеми с WMI услугата и нейните подсистеми..