skip to navigation
skip to content

PyMI 1.0.4

Windows Management Infrastructure API for Python.

This project provides a Python native module wrapper over the Windows Management Infrastructure (MI) API [1].

Works with Python 2.7 and 3.x on any Windows version which supports the MI API, both x86 and x64.

It includes also a drop-in replacement for the Python WMI [2] module, proving much faster execution times and no dependency on pywin32.


Pip is the preferred way to install PyMI. Pre-compiled binary wheels are available on Pypi [3]:

pip install PyMI


This project can be used either with a lower level interface that reflects the underlying MI API structure or with the higher level (and slightly slower) WMI module replacement.

MI module basic usage

Here’s a simple example which enumerates all processes and kills any instance of “KillerRabbitOfCaerbannog.exe”.

import mi

with mi.Application() as a:
    with a.create_session(protocol=mi.PROTOCOL_WMIDCOM) as s:
        proc_name = u'notepad.exe'
        with s.exec_query(
                u"root\\cimv2", u"select * from Win32_Process") as q:
            i = q.get_next_instance()
            while i is not None:
                if i[u'name'].lower() == u"KillerRabbitOfCaerbannog.exe":
                    cls = i.get_class()
                    # Prepare parameters
                    params = a.create_method_params(cls, u"Terminate")
                    # Exit code
                    params['reason'] = 10
                    # Invoke method
                    with s.invoke_method(i, u"Terminate", params) as op:
                i = q.get_next_instance()

WMI module basic usage

And here’s the same example written using the WMI module replacement, which provides a simpler and higher level interface over the mi API:

import wmi

conn = wmi.WMI()
for p in conn.Win32_Process():
    if p.Name == u"KillerRabbitOfCaerbannog.exe":


Open the provided PyMI.sln solution in Visual Studio 2015 [4], choose your target Python version / platform and build. Wheel packages are automatically generated in the dist folder for release builds.

Note: the target Python version must be present. The Python path can be customized by setting the corresponding PythonDir* user macro, e.g. PythonDir_34_x64.

File Type Py Version Uploaded on Size
PyMI-1.0.4-cp27-none-win32.whl (md5)
Python Wheel 2.7 2016-09-28 1MB
PyMI-1.0.4-cp27-none-win_amd64.whl (md5)
Python Wheel 2.7 2016-09-28 1MB
PyMI-1.0.4-cp34-none-win_amd64.whl (md5)
Python Wheel 3.4 2016-09-28 1MB
PyMI-1.0.4-cp35-none-win_amd64.whl (md5)
Python Wheel 3.5 2017-04-12 1MB
PyMI-1.0.4-cp36-none-win32.whl (md5) Python Wheel cp36 2017-07-09 1MB
PyMI-1.0.4-cp36-none-win_amd64.whl (md5) Python Wheel cp36 2017-07-09 1MB (md5) Source 2016-09-28 1MB