如何使用VBScript列出所有具有方法的WMI类?

3
使用VBScript,我如何列出所有具有方法的WMI类?
1个回答

3
运行 SELECT schema query以获取命名空间中所有类的列表,然后检查每个类的 Methods_.Count
strComputer  = "."
strNamespace = "root\cimv2"

Set oWMI = GetObject("winmgmts:\\" & strComputer & "\" & strNamespace)
Set colClasses = oWMI.ExecQuery("SELECT * FROM meta_class") 

For Each oClass in colClasses
  If oClass.Methods_.Count > 0 Then
    WScript.Echo oClass.Path_.Class
  End If
Next

您可能希望仅限于 动态静态 的结果,就像 WMI Code Creator 一样。为此,请添加对应类限定符的额外检查。
...
For Each oClass in colClasses

  For Each oQualifier In oClass.Qualifiers_
    strQualName = LCase(oQualifier.Name)

    If strQualName = "dynamic" OR strQualName = "static" Then
      If oClass.Methods_.Count > 0 Then
        WScript.Echo oClass.Path_.Class
      End If
    End If

  Next
Next

我建议您阅读WMI脚本编写入门:第2部分文章。它详细解释了WMI的概念和基础架构,并提供了示例,可能已经包含了您未来问题的答案。 :)


1
检查每个方法是否存在“已实现”限定符也是一个好主意 - 存在一些方法,但未实现(例如“SetPowerState”)。 - Uros Calakovic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接