以下のように WMI オブジェクトにクエリを実行しWin32_PerfFormattedData_msmq_MSMQQueue
て、MSMQ キューのメッセージ数を取得できますが、キューとそのサブキュー (ポイズンとリトライなど) のメッセージの累積数が返されます。理想的には、ポイズン キューだけでメッセージの数を取得したいと考えています。
これは WMI を使用して可能ですか?
Dim Locator
Set Locator = CreateObject("WbemScripting.SWbemLocator")
Dim objs
Set Service = Locator.ConnectServer(".", "root\cimv2")
Set objs = Service.ExecQuery("SELECT MessagesinQueue " &_
"FROM Win32_PerfFormattedData_msmq_MSMQQueue " &_
"WHERE Name LIKE '%\\private$\\myqueue'")
For Each object In objs
WScript.Echo "Name: " & object.Name
WScript.Echo "MessageCount: " & object.MessagesInQueue
Next
サブキューに関するドキュメントを考えると、サブキューはメインの物理キューの単なる論理パーティションであるため、上記の結果は理にかなっていますが、有害なメッセージを特定するために照会できる他の WMI オブジェクトまたは属性はありますか?