Rozwiązywanie problemów z WMI

Każdy doświadczony administrator systemu Windows wielokrotnie napotykał problemy z usługą WMI i jej komponentami. Obecność problemów w podsystemie WMI jest krytyczna z punktu widzenia normalnego funkcjonowania systemu, więc administrator musi zastosować jedną lub drugą sztuczkę, aby przywrócić WMI. W tym artykule opisujemy dość prostą technikę diagnozowania i rozwiązywania problemów z usługą WMI..

Szeroki zakres błędów może wskazywać na problemy z WMI:

  • Błędy w przetwarzaniu żądań WMI w dziennikach systemowych i aplikacyjnych
  • Błędy GPO związane z WMI (nieprawidłowe działanie filtrów zasad WMI itp.)
  • Błędy w działaniu / niemożność zainstalowania agentów SCCM / SCOM
  • Błędy w skryptach (VBS lub PowerShell) przy użyciu przestrzeni nazw WMI

Przede wszystkim musisz sprawdzić, czy system ma usługę Instrumentacji zarządzania Windows (Winmgmt) i czy jest włączona.

Jeśli usługa jest obecna i jest w stanie Uruchomionym, zaleca się przetestowanie kondycji WMI poprzez dostęp do niej za pomocą prostego żądania WMI. Na przykład w programie PowerShell można to zrobić w następujący sposób:

get-wmiobject Win32_OperatingSystem

Jeśli system zwróci błąd podczas wykonywania najprostszego żądania WMI (zrzut ekranu pokazuje przykład poprawnej odpowiedzi usługi WMI), prawdopodobnie oznacza to nieprawidłowe działanie usługi WMI lub niektórych jej podsystemów, uszkodzenie repozytorium WMI lub inne problemy.
Treść

  • Narzędzie WMIDiag
  • Ponowna rejestracja bibliotek WMI i ponowna kompilacja plików mof
  • Ponowne tworzenie repozytorium WMI (repozytorium)

Narzędzie WMIDiag

Do „cienkiej” diagnostyki usługi WMI służy oficjalne narzędzie Microsoft - WMIDiag (Microsoft WMI Diagnosis). Narzędzie to skrypt vbs, który sprawdza różne podsystemy WMI i zapisuje zebrane informacje w plikach dziennika (domyślnie dzienniki znajdują się w katalogu% TEMP% - C: \ USERS \% USERNAME% \ APPDATA \ LOCAL \ TEMP \) Wynikowy raport składa się z plików, których nazwy zaczynają się od WMIDIAG-V2.1 i obejmują następujące typy plików:

  • .pliki dziennika zawierają szczegółowy raport o aktywności i działaniu narzędzia WMIDiag
  • .Pliki txt zawierają raporty podsumowujące znalezione błędy, na które warto zwrócić uwagę
  • Pliki .Csv zawierają informacje potrzebne do długoterminowej analizy podsystemu WMI

Wskazówka. W 64-bitowych wersjach systemu Windows wmidiag musi być uruchamiany w następujący sposób:

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

w przeciwnym razie pojawi się błąd: WMIDiag musi być uruchamiany z natywnego 64-bitowego środowiska. To nie jest obsługiwane w Wow64.

Po zakończeniu działania narzędzia WMIDiag administrator powinien sprawdzić otrzymane pliki dziennika, przeanalizować i spróbować naprawić znalezione błędy.

Ogólnie rzecz biorąc, WMIDiag może dostarczyć informacji na temat naprawiania prywatnych błędów w WMI, ale w większości przypadków proces ten jest dość czasochłonny i warty czasu poświęconego tylko na rozwiązywanie incydentów w krytycznych systemach (zwykle na serwerach produkcyjnych). W segmencie masowym stacji roboczych o wiele łatwiej jest „uderzyć o podłogę” i radykalnie rozwiązać problem WMI.

Ponowna rejestracja bibliotek WMI i ponowna kompilacja plików mof

Poniższy skrypt to „miękka” opcja przywracania kondycji usługi WMI na jednym komputerze (biblioteki dll i usługi WMI są ponownie rejestrowane, pliki mof są ponownie kompilowane). Ta procedura jest bezpieczne a jego wdrożenie nie powinno prowadzić do żadnych nowych problemów z systemem.

sc config winmgmt start = wyłączone 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 dla / f %% s w ('dir / b * .mof') do mofcomp %% s dla / f %% s w ('dir / b * .mfl') do mofcomp %% s

Te polecenia można wykonać, po prostu wstawiając wiersz polecenia do okna lub zapisując kod w pliku nietoperza i uruchamiając go z uprawnieniami administratora. Po zakończeniu skryptu należy ponownie uruchomić system i ponownie sprawdzić działanie WMI.

Ponowne tworzenie repozytorium WMI (repozytorium)

W przypadku, gdy poprzednia metoda nie pomogła, będziesz musiał przejść do „trudniejszego” sposobu przywrócenia usługi WMI, który polega na przebudowaniu repozytorium.

Repozytorium WMI (repozytorium) znajduje się w katalogu % windir% \ System32 \ Wbem \ Repository Jest to baza danych zawierająca informacje o metadanych i definicjach klas WMI. W niektórych przypadkach repozytorium WMI może zawierać informacje o statycznej klasie. Jeśli repozytorium WMI jest uszkodzone, mogą wystąpić błędy w działaniu usługi Instrumentacji zarządzania Windows (Winmgmt) aż do całkowitej niemożności jej uruchomienia.

Jeśli podejrzewasz, że repozytorium WMI jest uszkodzone, pamiętaj, że jego ponowne utworzenie jest ostatnią rzeczą, do której powinieneś się stosować tylko wtedy, gdy żadne inne operacje nie ożywiają WMI.

Wskazówka. W praktyce zdarza się, że odtworzenie repozytorium WMI prowadzi do problemów z oprogramowaniem innych firm. Efekt ten wynika z faktu, że wszystkie wpisy w bazie danych WMI są resetowane (do stanu czystego systemu). Takie oprogramowanie może wymagać ponownej instalacji w trybie odzyskiwania..

W systemie Windows Vista i nowszych można sprawdzić integralność repozytorium WMI za pomocą polecenia:

winmgmt / Verrerepository

Jeśli polecenie zwróci, że baza danych WMI jest niespójna (INCONSISTENT), warto spróbować miękkiego przywrócenia repozytorium:

Winmgmt / salvagerepository

I uruchom ponownie usługę wmi:

stop netto winmgmt
start netto winmgmt

Jeśli polecenie opisane powyżej nie pomogło, resetujemy repozytorium do stanu początkowego (twardy reset) w następujący sposób:

Winmgmt / resetrepository

W przypadku, gdy polecenia Winmgmt / salvagerepository i Winmgmt / resetrepository nie dały pożądanego efektu, warto spróbować wykonać „twarde” odtworzenie bazy WMI ręcznie w tym scenariuszu:

sc config winmgmt start = wyłączony net stop winmgmt cd% windir% \ system32 \ wbem winmgmt / kill winmgmt / unregserver winmgmt / regserver winmgmt / resyncperf jeśli istnieje Repos_bakup rd Repos_bakup / s / q zmiana nazwy Repozytorium Repr3232% system sysp scecli.dll regsvr32 / s% systemroot% \ system32 \ userenv.dll dla / f %% s in ('dir / b * .dll') do regsvr32 / s %% s dla / f %% s in ('dir / b * .mof ') do mofcomp %% s dla / f %% s in (' dir / b * .mfl ') do mofcomp %% s sc config winmgmt start = auto net start winmgmt wmiprvse / regserver

Ten skrypt całkowicie odtwarza repozytorium WMI (stare repozytorium jest przechowywane w katalogu Repos_bakup). Po zakończeniu działania skryptu należy ponownie uruchomić komputer, a następnie przetestować usługę WMI za pomocą prostego żądania.

W tym artykule opracowaliśmy typowe techniki rozwiązywania problemów z usługą WMI i jej podsystemami..