윈도우 시스템에서 WMI 인터페이스에 WQL(SQL for WMI)문을 통해 질의하여, 시스템의 각종 정보들을 아주 쉽게 얻어올 수 있다.
In the Windows system, the WMI interface is queried via the WQL (SQL for WMI) statement, so it is very easy to get various information of the system.
WQL은 이름에서 유추할 수 있듯 일반적인 SQL문과 유사하다.
WQL is similar to a regular SQL statement, as you can guess from the name.
간단한 스크립트를 예로 들어보겠다.
Let's take a simple script as an example.
아래는 python코드이다.
Below is the python code.
import win32com.client
strComputer = "."
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")
"""
Example Queries:
SELECT * FROM Win32_OperatingSystem
SELECT * FROM Win32_NetworkAdapter WHERE ConfigManagerErrorCode = 0
SELECT Name, Model, InterfaceType, MediaType, Size from Win32_DiskDrive
SELECT Name, Description, DriveType, FileSystem, FreeSpace, Size, VolumeSerialNumber from Win32_LogicalDisk
SELECT Description, IPAddress, IPSubnet, IPConnectionMetric, MACAddress, DefaultIPGateway FROM Win32_NetworkAdapterConfiguration WHERE DefaultTTL > 1
SELECT Name, MACAddress, ConfigManagerErrorCode, NetConnectionID FROM Win32_NetworkAdapter WHERE AdapterType = 'Ethernet 802.3'
"""
objResult = objSWbemServices.ExecQuery("""
SELECT Description, IPAddress, IPSubnet, IPConnectionMetric, MACAddress, DefaultIPGateway
FROM Win32_NetworkAdapterConfiguration
WHERE DefaultTTL > 1
""")
for itemResult in objResult:
print itemResult
다음은 javascript코드이다.
Here is the javascript code:
function GetInformation() {
var locator = new ActiveXObject ("WbemScripting.SWbemLocator");
var service = locator.ConnectServer(".");
var properties = service.ExecQuery("SELECT * FROM Win32_NetworkAdapter");
var e = new Enumerator (properties);
document.write("<style type='text/css'> * { font-size: 12px; } </style><table border=0 cellspacing=1 cellpadding=5 bgcolor=0 width=100%>");
dispHeading();
for (;!e.atEnd();e.moveNext ())
{
var p = e.item ();
if (p.NetConnectionStatus != null) {
document.write("<tr bgcolor=#ffffff>");
document.write("<td>" + p.Name + " / " + p.NetConnectionID + "</td>");
document.write("<td>" + p.NetConnectionStatus + "</td>");
document.write("<td>" + p.PermanentAddress + "</td>");
document.write("<td>" + p.MACAddress + "</td>");
document.write("</tr>");
}
}
document.write("</table>");
}
function dispHeading()
{
document.write("<thead bgcolor=#efefef>");
document.write("<td>Name</td>");
document.write("<td>x</td>");
document.write("<td>Status</td>");
document.write("<td>MACAddress</td>");
document.write("</thead>");
}
GetInformation();
델파이에서는 이렇게..
In Delphi ...
http://www.magsys.co.uk/delphi/magwmi.asp
가져오고 싶은 정보를 어디서 가져와야 할 지 모르겠다면,
If you do not know where to fetch the information you want to import,
WMI Explorer라는 프로그램을 첨부하니 다운받아서 실행해보기 바란다.
Attach a program called WMI Explorer and download and run it.
wmi_explorer.zip