Creating a Script to Simplify “Invalid Namespace” Error Resolution

2020-04-02

I started encountering the “Invalid Namespace" message when running certain programs. While I managed to find solutions through research, creating BAT files for those processes felt a bit cumbersome. So, I decided to create a PowerShell script to automate these tasks.

Resolution Method

Disclaimer

Before proceeding, please use this script at your own risk.

Symptoms

Here are the symptoms I experienced:

  • “Invalid Namespace" error occurring in specific programs.
  • The “Windows Management Instrumentation" service is running.
  • Opening wmimgmt.msc, right-clicking on “WMI Control," selecting “Properties," and going to the “Advanced" tab showed that the “Default namespace for scripts" was marked as “Not Available," and the “Change" button was grayed out.

Solution

Although I don’t fully understand it, one of the causes of the “Invalid Namespace" error is a corrupted WMI repository.

To address this, we can retrieve a list of MOF files from HKLM\Software\Microsoft\WBEM\CIMOM\Autorecover MOFs in the registry. Then, we’ll compile these MOF files using mofcomp.exe and register them in the WMI repository to facilitate recovery.

steps

  1. Type “PowerShell" in the menu, right-click the displayed icon, and select “Run as administrator."
  2. Copy and paste the code below into the PowerShell window and press Enter.
  3. Wait until you see messages like “Parsing MOF file," “MOF file has been parsed," “Storing data in the database…," and “Completed" repeating multiple times. Once it stops, the process is complete.
(Get-Item -Path "Registry::HKLM\Software\Microsoft\WBEM\CIMOM\").GetValue("Autorecover MOFs") | % {mofcomp.exe  $_} 

What’s Happening Inside

  1. Retrieving a list of MOF files from the registry.
  2. Executing mofcomp.exe with each of these files as arguments.

Conclusion

While this should resolve the issue, there might be cases where it doesn’t work. In such situations, consider exploring alternative solutions.