Odstraňování potíží s WMI

Každý zkušený správce systému Windows opakovaně zaznamenal problémy se službou WMI a jejími komponenty. Přítomnost problémů v subsystému WMI je kritická z hlediska normálního fungování systému, takže správce se musí uchýlit k jednomu nebo druhému triku, aby obnovil WMI. V tomto článku popisujeme poměrně jednoduchou techniku ​​pro diagnostiku a řešení problémů se službou WMI..

Problémy s WMI mohou naznačovat celá řada chyb:

  • Chyby při zpracování požadavků WMI v systémových a aplikačních protokolech
  • Chyby GPO související s WMI (nesprávné fungování filtrů zásad wmi atd.)
  • Chyby v provozu / nemožnosti instalace agentů SCCM / SCOM
  • Chyby ve skriptech (vbs nebo powerhell) pomocí jmenného prostoru WMI

Nejprve musíte zkontrolovat, zda má systém službu Windows Management Instrumentation (Winmgmt) a zda je zapnutý..

Pokud je služba přítomna a je ve stavu Started, doporučuje se otestovat stav WMI přístupem pomocí jednoduchého požadavku wmi. Například s Powershell to lze udělat takto:

get-wmiobject Win32_OperatingSystem

Pokud systém vrátí chybu při provádění nejjednoduššího požadavku WMI (snímek obrazovky ukazuje příklad správné odpovědi služby WMI), pravděpodobně existuje nesprávná funkce služby WMI nebo některých jejích subsystémů, poškození úložiště WMI nebo jiné problémy..
Obsah:

  • Nástroj WMIDiag
  • Opětovná registrace knihoven WMI a překompilace souborů MF
  • Opětovné vytvoření úložiště WMI (úložiště)

Nástroj WMIDiag

Pro „tenkou“ diagnostiku služby WMI existuje oficiální obslužný program společnosti Microsoft - WMIDiag (Microsoft WMI Diagnostnosis). Tento nástroj je skript vbs, který kontroluje různé subsystémy WMI a zapisuje shromážděné informace do souborů protokolu (ve výchozím nastavení jsou protokoly v adresáři% TEMP% - C: \ USERS \% USERNAME% \ APPDATA \ LOCAL \ TEMP \) Výsledná sestava sestává ze souborů, jejichž jména začínají WMIDIAG-V2.1 a obsahují následující typy souborů:

  • .Soubory protokolu obsahují podrobnou zprávu o činnosti a činnosti obslužného programu WMIDiag
  • .Soubory txt obsahují souhrnné zprávy o zjištěných chybách, které stojí za to věnovat pozornost
  • Soubory .Csv obsahují informace potřebné pro dlouhodobou analýzu subsystému WMI

Tip. V 64bitových verzích Windows musí být wmidiag spuštěn takto:

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

jinak se objeví chyba: WMIDiag musí být spuštěn z nativního 64bitového prostředí. Ve Wow64 není podporován.

Po dokončení práce nástroje WMIDiag by měl správce zkontrolovat přijaté soubory protokolu, analyzovat a pokusit se opravit nalezené chyby.

Obecně může WMIDiag poskytovat informace o opravě soukromých chyb ve službě WMI, ale ve většině případů je tento proces poměrně časově náročný a stojí za čas strávený pouze při řešení incidentů v kritických systémech (obvykle na produktivních serverech). Pro hromadný segment uživatelských pracovních stanic je mnohem snazší „zasáhnout“ a radikálně vyřešit problém WMI.

Opětovná registrace knihoven WMI a překompilace souborů MF

Následující skript je „měkkou“ možností, jak obnovit stav služby WMI na jednom počítači (knihovny DLL a služby WMI jsou znovu zaregistrovány, soubory MF jsou znovu kompilovány). Tento postup je bezpečné a jeho implementace by neměla vést k žádným novým problémům se systémem.

sc config winmgmt start = vypnuto net stop winmgmt cd% windir% \ system32 \ wbem pro / f %% s v ('dir / b * .dll') do regsvr32 / s %% s wmiprvse / regserver winmgmt / regserver sc config winmgmt start = auto net start winmgmt pro / f %% s v ('dir / b * .mof') do mofcomp %% s pro / f %% s v ('dir / b * .mfl') do mofcomp %% s

Tyto příkazy lze provést jednoduše vložením příkazového řádku do okna nebo uložením kódu do souboru bat a jeho spuštěním s právy správce. Po dokončení skriptu je třeba systém restartovat a operaci WMI znovu zkontrolovat.

Opětovné vytvoření úložiště WMI (úložiště)

V případě, že předchozí metoda nepomohla, budete muset přistoupit k „tvrdšímu“ způsobu obnovení služby WMI, který spočívá v přestavbě úložiště..

Úložiště WMI (úložiště) nachází se v katalogu % windir% \ System32 \ Wbem \ Repository Je to databáze, která obsahuje informace o metadatech a definicích tříd WMI. V některých případech může úložiště WMI obsahovat informace o statické třídě. Pokud je úložiště WMI poškozené, může dojít k chybám při provozu služby Windows Management Instrumentation (Winmgmt) až do úplné nemožnosti jej spustit..

V případě, že máte podezření, že úložiště WMI je poškozeno, mějte na paměti, že jeho opětovné vytvoření je poslední věcí, na kterou byste se měli uchýlit, pouze pokud žádné jiné operace znovu oživí WMI..

Tip. V praxi existují situace, kdy rekonstituce úložiště WMI vede k problémům se softwarem třetích stran. Tento efekt je způsoben skutečností, že všechny položky v databázi WMI jsou resetovány (do stavu čistého systému). Takový software bude možná nutné přeinstalovat v režimu obnovy..

V systému Windows Vista a novějších můžete ověřit integritu úložiště WMI pomocí příkazu:

winmgmt / ověření úložiště

Pokud příkaz vrátí, že databáze WMI je v nekonzistentním stavu (INCONSISTENT), vyplatí se vyzkoušet měkké obnovení úložiště:

Winmgmt / salvagerepository

A restartujte službu wmi:

net stop winmgmt
net start winmgmt

Pokud výše popsaný příkaz nepomohl, obnovíme repozitář do původního stavu (tvrdý reset) takto:

Winmgmt / resetrepository

V případě, že příkazy Winmgmt / salvagerepository a Winmgmt / resetrepository nedaly požadovaný účinek, je vhodné se pokusit provést „tvrdé“ opětovné vytvoření základny WMI ručně s tímto scénářem:

sc config winmgmt start = deaktivováno net stop winmgmt cd% windir% \ system32 \ wbem winmgmt / kill winmgmt / unregserver winmgmt / regserver winmgmt / resyncperf pokud existuje Repos_bakup rd Repos_bakup / s / q přejmenovat Repository Repr3232% sysp systém scecli.dll regsvr32 / s% systemroot% \ system32 \ userenv.dll pro / f %% s v ('dir / b * .dll') do regsvr32 / s %% s pro / f %% s in ('dir / b * .mof ') do mofcomp %% s pro / f %% s v (' dir / b * .mfl ') do mofcomp %% s sc config winmgmt start = auto net start winmgmt wmiprvse / regserver

Tento skript zcela znovu vytvoří úložiště WMI (staré úložiště je uloženo v adresáři Repos_bakup). Po dokončení spuštění skriptu je třeba počítač restartovat a poté otestovat provoz služby WMI pomocí jednoduchého požadavku.

V tomto článku jsme shromáždili typické techniky pro řešení potíží služby WMI a jejích subsystémů..