WMI with IronPython

From IronPython Cookbook

(Difference between revisions)
Line 64: Line 64:
def showAll(root):
def showAll(root):
-
     nsClass = ManagementClass(ManagementScope(root), ManagementPath("__namespace"), None)
+
     scope = ManagementScope(root)
 +
    path = ManagementPath("__namespace")
 +
    nsClass = ManagementClass(scope, path, None)
     for namespace in nsClass.GetInstances():
     for namespace in nsClass.GetInstances():
         print "-----"
         print "-----"
         for nsProp in namespace.Properties:
         for nsProp in namespace.Properties:
             print str(nsProp.Name), ":", str(nsProp.Value)
             print str(nsProp.Name), ":", str(nsProp.Value)
-
    print "--"
+
        print "--"
-
    scope = ManagementScope("root\\" + str(namespace.GetPropertyValue("Name"))),
+
        scope = ManagementScope("root\\" + str(namespace.GetPropertyValue("Name")))
-
                            WqlObjectQuery("select * from meta_class")
+
        searcher = ManagementObjectSearcher(scope, WqlObjectQuery("select * from meta_class"), None)
-
    searcher = ManagementObjectSearcher(scope, None)
+
        for wmiClass in searcher.Get():
-
    for wmiClass in searcher.Get():
+
            print "Class:", wmiClass.GetPropertyValue("__CLASS")
-
        print "Class:", wmiClass.GetPropertyValue("__CLASS")
+
   
   
showAll('root')
showAll('root')

Revision as of 18:12, 26 December 2007

Examples from Vasta Sutra, of using the managed interface to WMI on the local system.

These examples use objects from the System.Management assembly:

import clr
clr.AddReference("System.Management")
from System.Management import (
    ManagementObject,
    ManagementObjectSearcher
)

mo = ManagementObject("Win32_Processor.DeviceID='CPU0'")
for p in mo.Properties: 
    print p.Name, '=', p.Value

query = ManagementObjectSearcher("Select * from Win32_Processor")
mo = query.Get().GetEnumerator().next()

mo = ManagementObject("Win32_PerfFormattedData_PerfOS_Processor.Name='_total'")
for p in mo.Properties: 
    print p.Name, '=', p.Value


This next example reports CPU usage:

import clr
clr.AddReference("System.Management")
from System.Management  import ManagementObject
from System.Threading import Thread

while True:
    mo = ManagementObject("Win32_PerfFormattedData_PerfOS_Processor.Name='_total'")
    print mo["PercentProcessorTime"]
    Thread.Sleep(5000)

This third example is adapted from this blog entry:

import clr
clr.AddReference("System.Management")
from System.Management import ManagementObjectSearcher

def requestWMI(squery,sproperties):
    output = ""
    objMgt = ManagementObjectSearcher(squery)
    for result in objMgt.Get():
        output += result.GetPropertyValue(sproperties)
    return output
    
print requestWMI("Select * from Win32_BIOS", "Caption")


This example is from an email on the mailing list from 2004:

import clr
clr.AddReference('System.Management')
from System.Management import (
    ManagementClass, ManagementScope,
    ManagementPath, ManagementObjectSearcher,
    WqlObjectQuery
)

def showAll(root):
    scope = ManagementScope(root)
    path = ManagementPath("__namespace")
    nsClass = ManagementClass(scope, path, None)
    for namespace in nsClass.GetInstances():
        print "-----"
        for nsProp in namespace.Properties:
            print str(nsProp.Name), ":", str(nsProp.Value)
        print "--"
        scope = ManagementScope("root\\" + str(namespace.GetPropertyValue("Name")))
        searcher = ManagementObjectSearcher(scope, WqlObjectQuery("select * from meta_class"), None)
        for wmiClass in searcher.Get():
            print "Class:", wmiClass.GetPropertyValue("__CLASS")
 
showAll('root')


Back to Contents.

TOOLBOX
LANGUAGES