La soluzione facile e flessibile per gestire le reti da remoto

Datto RMM e WMI malfunzionante

KB516141

Ultimo aggiornamento: 20 September 2021

Cosa fare se l’Agent di Datto RMM non ottiene informazioni da Windows Management Instrumentation (WMI)?

Datto RMM 9.8.0 e superiori

Introduzione

A volte le informazioni che un sistema operativo eroga attraverso Windows Management Instrumentation (WMI) possono presentare dei problemi, causati ad esempio da corruzione del relativo repository, che si traducono in una mancata o non corretta gestione inventariale (es: problemi in localizzazione coerente di hardware, software, servizi, etc.).
A causa di ciò l’Agent di Datto RMM, che cerca continuamente di eseguire un Audit attraverso l’analisi dei contenuti offerti da WMI, si ritrova sostanzialmente impossibilitato a fornire dati coerenti al portale.

I motivi che portano a questi malfunzionamenti possono essere molteplici ma al contempo poco interessanti al fine risolutivo e pertanto in questa procedura si cercherà di fornire non tanto una serie di spiegazioni in merito al perché incorrono ma delle soluzioni risolutive utili a riottenere il ripristino della corretta funzionalità di WMI.

Strumenti impattati/necessari

  • Credenziali amministrative per l’accesso al portale di Datto RMM
  • Agent di Datto RMM
  • Sistemi dotati di OS Microsoft Windows

Procedura

Per risolvere le problematiche WMI sui sistemi “danneggiati” occorrerà eseguire in sequenza le seguenti attività:

1) Individuare e risolvere eventuali problemi “primari”

  • Utilizzare il Component ufficiale, rintracciabile in ComStore, denominato Health Check Tool.
    Al termine controllare i risultati e sistemare le situazioni così come da istruzioni. Qui il documento ufficiale.
  • Assicurarsi che la versione di Microsoft.NET Framework installata sull’OS sia aggiornata e funzionante. Se necessario sarà possibile ripararla attraverso un apposito strumento presente in ComStore, denominato Microsoft .NET Framework Repair Tool.
  • Disinstallare e reinstallare l’Agent di Datto RMM. Per maggiori informazioni qui trovi il documento ufficiale.
  • Controllare lo stato del Repository WMI come da contenuti del sottostante punto 2 denominato Scoprire se il Repository WMI è corrotto.

2) Scoprire se il Repository WMI è corrotto

Benché esistano diverse vie utili a comprendere se il Repository WMI presenta corruzioni ma in questa procedura si è scelto di prendere in considerazione il metodo che gli Agent di Datto RMM usano per reperire le informazioni.

  • Procedere avviando CMD in modalità amministrativa per poi inserire i seguenti comandi:
wmic computersystem list full /format:list
wmic baseboard list full /format:list
wmic bios list full /format:list
  • Normalmente l’output dovrebbe presentare una lista di informazioni riguardo le informazioni WMI richieste. Qualora invece dovesse presentare uno dei seguenti messaggi di errore allora WMI sull’OS risulterà in difetto e non permetterà all’Agent di Datto RMM di ottenere quanto gli occorre:
    • The interface is unknown
    • Invalid class
    • Invalid namespace \root\cimv2
    • Invalid namespace \root\default
    • Provider load failure
    • Specified cast is not valid
    • The specified module could not be found
    • Value does not fall within the expected range
    • The executable program that this service is configured to run in does not implement the service
    • The service did not respond to the start or control request in a timely fashion
    • Class not registered
 Esempio di un Repository WMI corrotto
  • In presenza di uno dei suddetti errori occorrerà passare alla riparazione in base a direttive presenti in successivo punto.

3) Riparazione del Repository WMI

Qui di seguito risultano elencati i vari metodi risolutivi:

Metodo 1: Verificare e ripristinare il Repository

Avviare CMD in modalità amministrativa ed eseguire le sottostanti attività al fine di ripristinare la funzionalità di WMI:

  • In CMD inserire la seguente:

winmgmt /verifyrepository

  • Se in output comparirà qualsiasi messaggio differente dal canonico “WMI repository is consistent,” occorrerà avviare il seguente comando al fine di recuperare il contenuto coerente del Repository per poi importarlo in un Repository che verrà ricostruito appositamente:

Winmgmt /salvagerepository                                                  


Metodo 2: Ri-registrazione di tutte le DLL e ricompilazione dei file .MOF

  • Avviare il seguente script al fine di ri-registrare tutte le DLLE e ricompilare i file .MOF presenti in percorso C:\Windows\System32\Wbem :

@ECHO OFF
sc config winmgmt start= auto
reg add HKLM\SOFTWARE\Microsoft\Ole /v EnableDCOM /t REG_SZ /d "Y" /f
reg add HKLM\SOFTWARE\Microsoft\Ole /v LegacyAuthenticationLevel /t REG_DWORD /d "2" /f
reg add HKLM\SOFTWARE\Microsoft\Ole /v LegacyImpersonationLevel /t REG_DWORD /d "3" /f
reg delete HKLM\SOFTWARE\Microsoft\Ole /v DefaultLaunchPermission /f
reg delete HKLM\SOFTWARE\Microsoft\Ole /v MachineAccessRestriction /f
reg delete HKLM\SOFTWARE\Microsoft\Ole /v MachineLaunchRestriction /f
NET STOP SharedAccess
NET STOP winmgmt
CD %WINDIR%\System32\Wbem\Repository
DEL /F /Q /S %WINDIR%\System32\Wbem\Repository\*.*
CD %WINDIR%\system32\wbem
REGSVR32 /s %WINDIR%\system32\scecli.dll
REGSVR32 /s %WINDIR%\system32\userenv.dll
MOFCOMP cimwin32.mof
MOFCOMP cimwin32.mfl
MOFCOMP rsop.mof
MOFCOMP rsop.mfl
FOR /f %%s IN ('DIR /b /s *.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
MOFCOMP exwmi.mof
MOFCOMP -n:root\cimv2\applications\exchange wbemcons.mof
MOFCOMP -n:root\cimv2\applications\exchange smtpcons.mof
MOFCOMP exmgmt.mof
rundll32 wbemupgd, UpgradeRepository
NET STOP Cryptsvc
DEL /F /Q /S %WINDIR%\System32\catroot2\*.*
DEL /F /Q C:\WINDOWS\security\logs\*.log
NET START Cryptsvc
cd c:\windows\system32
lodctr /R
cd c:\windows\sysWOW64
lodctr /R
WINMGMT.EXE /RESYNCPERF
msiexec /unregister
msiexec /regserver
REGSVR32 /s msi.dll
NET START winmgmt
NET START SharedAccess

N.B. Lo script sopra riportato può essere tranquillamente salvato come file .BAT e lanciato localmente sugli endpoint problematici attraverso CMD lanciato in modalità amministrativa.
Può inoltre essere avviato anche dalla shell offerta da Datto RMM Agent Browser o integrato in un Compontent.

  • Al termine dell’esecuzione dello script occorrerà necessariamente riavviare il sistema.
  • A riavvio avvenuto portarsi sul portale di Datto RMM e forzare un Audit manuale del dispositivo. Al fine di eseguire un full Audit occorrerà prestare attenzione a selezionare unicamente il dispositivo coinvolto.

Metodo 3: Ricostruire completamente il Repository WMI

Se tutte le soluzioni sopra menzionate non porteranno ad ottenere un coerente ripristino di WMI allora risulterà possibile eseguirne una ulteriore, ma in questo caso potenzialmente pericolosa per l’OS, attività di ricostruzione del Repository WMI. Se per esempio il processo di reintegrazione di un qualsiasi file .MOF dovesse fallire gli applicativi installati sul sistema operativo, e ad esso riferiti, potrebbero smettere completamente di funzionare e, per fare in modo di riutilizzarli correttamente, occorrerà eseguirne eventuale reinstallazione.
Visto quanto segnalato occorre BEN COMPRENDERE che tale attività andrà eseguita ESCLUSIVAMENTE A PROPRIO RISCHIO E PERICOLO.

  • Per avviare tale attività di ripristino, consci della pericolosità, si potrà quindi avviare CMD in modalità amministrativa per poi eseguire le seguenti istruzioni:
Net stop Winmgmt
Winmgmt.exe /standalonehost
Winmgmt.exe /resetrepository
Net start Winmgmt
New call-to-action