2010-10-22 20 views

Répondre

2

Exécuter un SELECT schema query pour obtenir une liste de toutes les classes dans un espace de noms, puis vérifiez chaque de classe 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 

Vous pouvez limiter les résultats à dynamic and static classes que, comme WMI code créateur ne. Pour ce faire, ajoutez une vérification supplémentaire pour les qualificateurs de classe correspondants.

... 
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 

Je suggère également que vous lisiez l'article WMI Scripting Primer: Part 2. Il explique les concepts et l'infrastructure de WMI en détail et avec des exemples, et peut déjà contenir des réponses à vos questions futures. :)

+1

Il est également recommandé de vérifier la présence du qualificatif «Implémenté» sur chaque méthode. Il existe des méthodes présentes mais non implémentées (comme «SetPowerState» par exemple). –