如何从WMI中获得超过97行?

时间:2011-12-19 10:12:31

标签: vbscript wmi

我有以下.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 个答案:

答案 0 :(得分:4)

通过一点谷歌搜索,我找到了Yoel Arnon的帖子(网络搜索说他是MSMQ的大师),The MSMQ WMI Provider。在其中他指出 MSMQ性能计数器有一个限制,它们只提供“计算机中的前97个队列(本地和传出队列)”。

在同一篇文章中,他提供了一个指向他开发的新WMI提供商的链接,以便克服该限制以及其他一些限制,以及联系信息的电子邮件地址。该帖子已有三年历史,但该文件仍可供下载。

答案 1 :(得分:1)

要完成你想要的东西,以及Daryn关于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循环中以将回显列表填充回用户。