Как получить более 97 строк из WMI? - PullRequest
5 голосов
/ 19 декабря 2011

У меня есть следующий скрипт .VBS, который работает, но он возвращает только верхние ± 100 (97) строк данных. Как получить полный список?

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PerfFormattedData_MSMQ_MSMQQueue",,48)
For Each objItem in colItems
    Wscript.Echo objItem.Name & " - " & objItem.MessagesinQueue
Next

Ответы [ 2 ]

4 голосов
/ 02 января 2012

С небольшим поиском в Интернете я нашел сообщение Йоэля Арнона (поиск в сети говорит, что он гуру в MSMQ), Поставщик WMI MSMQ .В нем он утверждает, что счетчики производительности MSMQ имеют ограничение, заключающееся в том, что они предоставляют только «первые 97 очередей (локальных и исходящих очередей) на вашем компьютере».

В том же посте, который он предоставляетссылку на нового провайдера WMI, которую он разработал, чтобы преодолеть это ограничение, а также некоторые другие, а также адрес электронной почты для контактной информации.Посту три года, но файл все еще доступен для скачивания.

1 голос
/ 03 января 2012

Чтобы выполнить то, что вы ищете, и ответ Дарина о MS, специально отменяющей после 97 записей, я бы настроил ваш процесс, скажем ... 2 или 3 запроса ...

Ваш запрос ищет

Select * from Win32_PerfFormattedData_MSMQ_MSMQQueue

Ищите некоторые данные, которые уже заполняют ваши первые 97, которые будут меньше, чем 97 ... такие как

Select * from Win32_PerfFormattedData_MSMQ_MSMQQueue 
     where SomeColumn = 'Some Common Value'

затем сделайте ВТОРОЙ проход с

Select * from Win32_PerfFormattedData_MSMQ_MSMQQueue 
     where NOT SomeColumn = 'Some Common Value'

Это поможет вам получить максимум 194 записи ... Найдите еще один "общий" элемент и разбейте его на 3 прохода соответственно, и каждый из них можно поместить в собственный цикл FOR / EACH, чтобы заполнить ваш список эхо-сигналов обратно пользователь.

...