2010-10-22 62 views

回答

2

运行一个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 

您可能希望将结果限制为仅dynamic and static classes,像WMI代​​码造物主一样。为此,请为相应的类限定符添加额外的检查。

... 
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 Scripting Primer: Part 2文章。它详细解释了WMI的概念和基础设施,并举例说明,并且可能已经为您未来的问题提供了答案。 :)

+1

检查每个方法上的“已实施”限定符存在也是一个好主意 - 存在但未实现的方法(如“SetPowerState”)。 – 2010-10-23 15:24:46

相关问题