개요
Windows Management Instrumentation.
WMI는 MS Windows에서 각종 시스템 관련 유틸리티 기능을 제공하는 python module이다. Microsoft의 WMI를 wrapping한 것.
- 홈페이지 : http://timgolden.me.uk/python/wmi.html
- 홈페이지 2: http://pypi.python.org/pypi/WMI
- 다운로드 : http://timgolden.me.uk/python/downloads
- 22/Jan/2008 현재 최신 버젼 : 1.3.2
- 튜토리얼 : http://timgolden.me.uk/python/wmi-tutorial.html
- cookbook : http://timgolden.me.uk/python/wmi_cookbook.html
설치
다운로드 받은 파일의 압축을 풀면 아래와 같은 파일들이 만들어진다.
WMI 모듈은 설치하지 않고 사용할 수도 있다. 그냥 wmi.py 파일을 가져다 직접 import 해서 쓰면 된다. 설치해서 사용하고 싶다면 setup.py를 이용해서 설치할 수도 있다.
python setup.py install
WMI를 사용하기 위해서는 pywin32 모듈이 있어야 한다.
Demo
D:\WWWDownloads\1.3>python wmi.py위와 같은 간단한 데모를 볼 수 있다. 데모에서는 PC에 있는 모든 디스크 드라이브들의 볼륨 레이블을 보여준다.
Disks on IRMUS
C: 로컬 고정 디스크
D: 로컬 고정 디스크
E: CD-ROM 디스크
U: 로컬 고정 디스크
사용예
CPU 사용량 모니터
원본 링크 : http://www.goldb.org/goldblog/2006/11/13/CPUMonitorWithPythonAndWMI.aspx
import wmi
import time
c = wmi.WMI()
while True:
for cpu in c.Win32_Processor():
timestamp = time.strftime('%a, %d %b %Y %H:%M:%S', time.localtime())
print '%s | Utilization: %s: %d %%' % (timestamp, cpu.DeviceID, cpu.LoadPercentage)
time.sleep(5)
위 스크립트를 실행하면 5초 간격으로 CPU usage를 콘솔창에 출력한다.
Tue, 22 Jan 2008 11:34:25 | Utilization: CPU0: 5 %
Tue, 22 Jan 2008 11:34:30 | Utilization: CPU1: 11 %
Tue, 22 Jan 2008 11:34:37 | Utilization: CPU0: 40 %
Tue, 22 Jan 2008 11:34:42 | Utilization: CPU1: 38 %
Tue, 22 Jan 2008 11:34:49 | Utilization: CPU0: 13 %
Tue, 22 Jan 2008 11:34:54 | Utilization: CPU1: 5 %
Tue, 22 Jan 2008 11:35:01 | Utilization: CPU0: 8 %
듀얼코어 CPU에서 CPU0, CPU1 이 출력되는 것을 볼 수 있다.
계량된 소스코드 다운로드 : wmi_sample_cpu_monitor.py
Cookbook의 예제
- List all running processes
- List all running notepad processes
- Create and then destroy a new notepad process
- Show the interface for the .Create method of a Win32_Process class
- Show all automatic services which are not running
- Show the percentage free space for each fixed disk
- Run notepad, wait until it's closed and then show its text
- Watch for new print jobs
- Reboot a remote machine
- Show the IP and MAC addresses for IP-enabled network interfaces
- What's running on startup and from where?
- Watch for errors in the event log
- List registry keys
- Add a new registry key
- Add a new registry value
- Create a new IIS site
- Show shared drives
- Show print jobs
- Show disk partitions
- Install a product
- Connect to another machine as a named user
- Show a method's signature
- Schedule a job
- Run a process minimised
- Find Drive Types
- List Namespaces
- Use WMI in a thread
- Monitor multiple machines for power events
- Find the current wallpaper
사용 소감
- 로딩이 느린 감이 있다.
- MS Windows에서만 사용가능하다는 점이 약점. Platform independent한 python의 장점을 잃어버린다.
이 글은 스프링노트에서 작성되었습니다.