How to fix missing MSMQ WMI classes

If you have the MSMQ service up and running but all of the following classes are missing:

  • Win32_PerfRawdata_MSMQ_MSMQQueue
  • Win32_PerfRawdata_MSMQ_MSMQService
  • Win32_PerfRawdata_MSMQ_MSMQSession

then you have a problem either with WMI or the underlying performance moniter counters.

Fixing WMI

WMI maintains a class definition (or schema) for each installed counter and stores this information in the WMI database (repository).
Normally WMI will automatically detect new counters and add their class definitions to the database but if this hasn't happened then the following command may help:

WMIADAP /F

SeeĀ here for documentation on WMIADAP.

Fixing Performance Monitor counters

This blog post from last year should cover most of the known causes.

Note - if you can see Win32_PerfRawdata_MSMQ_MSMQQueue and Win32_PerfRawdata_MSMQ_MSMQService but not Win32_PerfRawdata_MSMQ_MSMQSession then you don't have a problem. The Session data is only available when there is a network session in existance. You can also see this in Performance Monitor where "MSMQ Queue" and "MSMQ Service" show up in the drop-down list but "MSMQ Session" does not. You just need to try again whilst sending messages to see the Win32_PerfRawdata_MSMQ_MSMQSession class become available.