Why full WMI reset is not recommended
Full WMI reset (to the state when the operating system was installed) is a serious measurement that should be well thought about, if needed at all. After the reset, you will need to reinstall any software that uses WMI repository. If, for example, your Server is System Center Configuration Manager Distribution Point or Pull Distribution Point, then you should not have any problem resetting (though you will need to reinstall SCCM Client). However, keep in mind that if there are other uses for the server, you might need to check it afterwards. If you’re in a case, when you need to reset WMI and it fixed your system to the state when you can boot – backup your content and better reinstall. It should not be an escape solution.
Affiliate: Experience limitless no-code automation, streamline your workflows, and effortlessly transfer data between apps with Make.com.
Checking WMI repository for corruption
There is a command to check If the WMI is corrupt. In Command Line with Administrative privileges run:
winmgmt /verifyrepository
If the repository is working fine you should get a message: “WMI Repository is consistent”.
The WMI doesn’t have to be corrupt in order for your software not to work properly. There are many software implementations (like SCCM Client) that use many settings from WMI repository. In most cases you can see in the logs that something is wrong with it and it points to many WMI settings. In this case you can understand that there is no simple solution to fixing these settings and it can take time, to find which ones and it is much easier to reset the WMI (or reinstall).
Full WMI Repository Reset
To merge current WMI repository with factory defaults, use:
winmgmt /salvagerepository
If this still doesn’t help, make full reset of the WMI respository:
winmgmt /resetrepository
You should get “WMI Repository has been reset” message. If it is anything else, try to rerun the command.
You can check “winmgmt switches” and more explanations from Microsoft.
If it still fails for your needs, you can use an older method. Create a file named “ResetWMI.cmd” with a content of:
REM Turn winmgmt service Startup type to Disabled
sc config winmgmt start = disabled
REM Stop winmgmt service
net stop winmgmt /y
REM Register / Reregister Service DLLs
regsvr32 /s %systemroot%\system32\scecli.dll
regsvr32 /s %systemroot%\system32\userenv.dll
REM Enter WBEM folder
cd /d %systemroot%\system32\wbem
REM Remove “repository” folder
rd /S /Q repository
REM Register / Reregister Service DLLs
for /f %%s in ('dir /b /s *.dll') do regsvr32 /s %%s
for /f %%s in ('dir /b /s *.exe') do regsvr32 /s %%s
for /f %%s in ('dir /b *.mof') do mofcomp %%s
for /f %%s in ('dir /b *.mfl') do mofcomp %%s
REM Register / Reregister wmiprvse Service
wmiprvse /regserver
REM Register / Reregister winmgmt Service
winmgmt /regserver
REM Enter WBEM folder in SysWOW64
cd /d %systemroot%\SysWOW64\wbem\
REM Remove “repository” folder
rd /S /Q repository
REM Register / Reregister Service DLLs
for /f %%s in ('dir /b /s *.dll') do regsvr32 /s %%s
for /f %%s in ('dir /b /s *.exe') do regsvr32 /s %%s
for /f %%s in ('dir /b *.mof') do mofcomp %%s
for /f %%s in ('dir /b *.mfl') do mofcomp %%s
REM Turn winmgmt service Startup type to Automatic
sc config winmgmt start = auto
REM Stop winmgmt service
net start winmgmt
Run the file with Administrative privileges.
After you run it, there might be “Manageability” errors on Servers (maybe even clients), so you need to run again:
winmgmt /resetrepository
*** There is also a tool to reset WMI at Technet Gallery with Batch file commands and Powershell script. Does something similar.
when you execute select IPAddress from Win32_NetworkAdapterConfiguration you will most likely get a large number of blank (null) results for index in my case 1-17. Only Index 18 provides non null results. How can I alter the above query to only return non null results.
Best regards
Sassan Karai
Hello Sassan,
Which method / application do you use for this query execution?
I love the efforts you have put in this, appreciate it for all the great posts.