Microsoft MAP et les interactions WMI
Vous n’êtes pas sans savoir que Microsoft vient de publier la version 7.0 de son outil Microsoft Assessment and Planning Toolkit (ici), utilitaire génial pour faire un peu de planification de capacité. Par contre, j’ai eu quelque soucis avec la connexion entre la machine MAP et quelques serveurs, celle-ci s’opérant via des requêtes WMI… Get-WmiObject : Access is denied. (Exception from HRESULT: 0×80070005 (E_ACCESSDENIED))
Voici donc quelques astuces.
La première est de tester les identifiants, c’est assez simple, il suffit de lancer la commande suivante:
net use \\monserveur \ADMIN$ /u:"mondomaine\monuser" "monmotdepasse"
Bien entendu les services RPC et WMI doivent être lancés:
net start rpcss && net start winmgmt
Utilitaire de test WMI
Microsoft propose en standard l’utilitaire WBEMtest mais reste assez « barbare », mais l’éditeur de PRTG propose gratuitement un utilitaire de requête WMI pour tester des connexions vers des machines.
Cet outil est disponible ici.
Activation des DCOM distribués
Lancez la console dcomcnfg, et vérifier que le premier paramètre est bien activé !
Vérifications des autorisations WMI
Si vous utilisez un service ou un compte devant accéder en WMI à une machine, il faut s’assurer que cela soit bien déclarér au niveau des sécurités WMI. Pour cela, lancer la console wmimgmt.msc.Il faut au minimum les autorisations »activer le compte » et « appel à distance autorisé ».
Reconstruire le service WMI
J’ai trouvé ce script sur le net, à prendre avec des pincettes pour vos environnements, mais il m’a l’air assez clean. Mais avant lancez la commande suivante pour effectuer une vérification de cohérence de l’espace de stockage WMI et reconstruit celui-ci si une incohérence est détectée. S’il est lisible, le contenu de l’espace de stockage incohérent est fusionné à l’espace de stockage reconstruit.
winmgmt /salvagerepository
Le script en question:
Echo Rebuilding WMI... Please wait. > c:\SW_Setup.log net stop sharedaccess >> c:\SW_Setup.log net stop winmgmt /y >> c:\SW_Setup.log cd %systemroot%\system32\wbem >> c:\SW_Setup.log del /Q Repository >> c:\SW_Setup.log c: cd %systemroot%\system32\wbem >> c:\SW_Setup.log rd /S /Q repository >> c:\SW_Setup.log regsvr32 /s %systemroot%\system32\scecli.dll >> c:\SW_Setup.log regsvr32 /s %systemroot%\system32\userenv.dll >> c:\SW_Setup.log mofcomp cimwin32.mof >> c:\SW_Setup.log mofcomp cimwin32.mfl >> c:\SW_Setup.log mofcomp rsop.mof >> c:\SW_Setup.log mofcomp rsop.mfl >> c:\SW_Setup.log 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 >> c:\SW_Setup.log mofcomp -n:root\cimv2\applications\exchange wbemcons.mof >> c:\SW_Setup.log mofcomp -n:root\cimv2\applications\exchange smtpcons.mof >> c:\SW_Setup.log mofcomp exmgmt.mof >> c:\SW_Setup.log net stop winmgmt >> c:\SW_Setup.log net start winmgmt >> c:\SW_Setup.log gpupdate /force >> c:\SW_Setup.log Echo Setting up fireall... Please wait. >> c:\SW_Setup.log netsh firewall set service remoteadmin enable >> c:\SW_Setup.log Echo Enable Ping >> c:\SW_Setup.log netsh firewall set icmpsetting 8 >> c:\SW_Setup.log Echo Dcom setup >> c:\SW_Setup.log reg add HKLM\SOFTWARE\Microsoft\Ole /v LegacyAuthenticationLevel /t REG_DWORD /d "2" /f >> c:\SW_Setup.log reg add HKLM\SOFTWARE\Microsoft\Ole /v LegacyImpersonationLevel /t REG_DWORD /d "3" /f >> c:\SW_Setup.log Echo Windows7 / Vista Stuff... Please ignore if you are not using. >> c:\SW_Setup.log Echo Disable UAC >> c:\SW_Setup.log %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f >> c:\SW_Setup.log Echo Win7 Firewall setup >> c:\SW_Setup.log netsh advfirewall set currentprofile settings remotemanagement enable >> c:\SW_Setup.log netsh advfirewall firewall set rule group="windows management instrumentation (WMI)" new enable=Yes >> c:\SW_Setup.log netsh advfirewall firewall set rule group="remote administration" new enable=yes >> c:\SW_Setup.log Echo Please check the log c:\SW_Setup.log for any issues. >> c:\SW_Setup.log Echo If using Windows7 or Vista please reboot. >> c:\SW_Setup.log Echo Check winmgmt is started, there were problems with it not starting on win7 >> c:\SW_Setup.log net start winmgmt >> c:\SW_Setup.log echo Resetting Automatic Updates >> c:\SW_Setup.log net stop bits net stop "Automatic Updates" REM Automatic Updates for those German Users net stop wuauserv del /f /s /q %windir%\SoftwareDistribution\*.* echo. echo. net start bits net start "Automatic Updates" net start wuauserv echo Forcing AU detection and resetting authorization tokens... >> c:\SW_Setup.log wuauclt.exe /resetauthorization /detectnow
Sinon, pour faire plus simple, il suffit de détruire le dossier contenant WMI
Net Stop WinMgmt /y Ren %WinDir%\System32\Wbem\Repository %WinDir%\System32\Wbem\OldRepository Net Start WinMgmt /y
Un ré-enregistrement des binaires et DLL peut être également nécessaire
for %i in (*.dll) do RegSvr32 -s %i for %i in (*.exe) do %i /RegServer
Je travaille actuellement en tant qu’Enterprise Architect pour le groupe CAPGEMINI. Acteur et expert communautaire reconnu depuis de nombreuses années, j’anime ce site autour des technologies Microsoft, des thématiques du Cloud, des infrastructures, … Je suis également à l’origine de nombreuses publications dans la presse IT.