【问题标题】:How to get more than 97 rows out of WMI?如何从 WMI 中获取超过 97 行?
【发布时间】:2011-12-19 10:12:30
【问题描述】:

我有以下 .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

【问题讨论】:

    标签: vbscript wmi


    【解决方案1】:

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

    在同一篇文章中,他提供了指向他开发的新 WMI 提供程序的链接以及其他一些限制,以及用于联系信息的电子邮件地址。该帖子已发布三年,但该文件仍可供下载。

    【讨论】:

      【解决方案2】:

      为了完成您正在寻找的内容,以及 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 循环中,以将您的回声列表填充回用户。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多