Sometimes it is worth knowing what the available namespaces are in WMI, especially if you are looking for a specific class and are not sure where it might be (sometimes it just isn’t under Root\Cimv2). Another reason is just for the sake of exploring the WMI repository to see what exactly is out there.
There are a couple of approaches to this: one using Get-WMIObject and another using Get-CIMInstance. Both ways gets you the same result as shown below:
Get-WmiObject -Namespace Root -Class __Namespace | Select-Object -Property Name
Get-CimInstance -Namespace Root -ClassName __Namespace
Note that there are some nested Namespaces below the top level ones that I showed above. We can find these by using the following function I wrote called Get-WMINamespace.
This function also allows you to query remote systems and allows for alternate credentials. By default, it will only show the top level namespaces and if you want to see all of the available nested namespaces, you must use the –Recurse parameter.
Get-WMINamespace -Recurse -Computername DC1 ` -Credential 'rivendell\proxb'
That is all to exploring all of the available WMI namespaces on a local or remote system.
You can download the function below. Note it requires PowerShell 3.0 at a minimum.