wmi模块 / wmi Module


WMI (Windows Management Instrumentation) 模块可用于获取 Windows 内部信息。该模块需要 win32com 的支持,环境安装如下,

pip install wmi
pip install pypiwin32

模块信息


WMI()

类实例化:w = wmi.WMI()

类的功能: 用于生成 WMI 的实例

传入参数:

返回参数: w

Win32_Processor() 方法

函数调用: processorList = w.Win32_Processor()

函数功能: 用于获取处理器信息对象,并存以列表形式

传入参数:

返回参数: processorList

processorList: list类型,list中每个元素均为一个含cpu信息的object

cpu object通过object.name调用,所含信息包括:

instance of Win32_Processor
{
AddressWidth = 64;
Architecture = 9;
Availability = 3;
Caption = "Intel64 Family 6 Model 78 Stepping 3";
CpuStatus = 1;
CreationClassName = "Win32_Processor";
CurrentClockSpeed = 2376;
CurrentVoltage = 9;
DataWidth = 64;
Description = "Intel64 Family 6 Model 78 Stepping 3";
DeviceID = "CPU0";
ExtClock = 100;
Family = 205;
L2CacheSize = 512;
L3CacheSize = 3072;
L3CacheSpeed = 0;
Level = 6;
LoadPercentage = 29;
Manufacturer = "GenuineIntel";
MaxClockSpeed = 2401;
Name = "Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz";
NumberOfCores = 2;
NumberOfLogicalProcessors = 4;
PowerManagementSupported = FALSE;
ProcessorId = "BFEBFBFF000406E3";
ProcessorType = 3;
Revision = 19971;
Role = "CPU";
SocketDesignation = "U3E1";
Status = "OK";
StatusInfo = 3;
SystemCreationClassName = "Win32_ComputerSystem";
SystemName = "CN00208511";
UpgradeMethod = 1;
Version = "";
};

Win32_PhysicalMemory() 方法

函数调用: memModuleList = w.Win32_PhysicalMemory()

函数功能: 用于获取物理内存信息对象,并存以列表形式

传入参数:

返回参数: memModuleList

memModuleList: list 类型,list 中每个元素均为一个含物理内存信息的 object

物理内存 object 通过 object.name 调用,所含信息包括:

instance of Win32_PhysicalMemory
{
BankLabel = "ChannelA";
Capacity = "";
Caption = "Physical Memory";
CreationClassName = "Win32_PhysicalMemory";
DataWidth = 64;
Description = "Physical Memory";
DeviceLocator = "Bottom-Slot 1(left)";
FormFactor = 12;
InterleaveDataDepth = 0;
InterleavePosition = 0;
Manufacturer = "Hynix/Hyundai";
MemoryType = 0;
Name = "Physical Memory";
PartNumber = "HMA81GS6AFR8N-UH ";
PositionInRow = 1;
SerialNumber = "28ECE200";
Speed = 2133;
Tag = "Physical Memory 0";
TotalWidth = 64;
TypeDetail = 16512;
};

Win32_LogicalDisk () 方法

函数调用: diskList = w.Win32_LogicalDisk(DriverType=3)

函数功能:用于获取磁盘信息对象,并存以列表形式

传入参数: *argv

DriverType: int 类型,筛选驱动类型

返回参数: diskList

diskList: list类型,list 中每个元素均为一个含磁盘信息的object

磁盘信息 object 通过object.name调用,所含信息包括:

instance of Win32_LogicalDisk
{
Access = 0;
Caption = "C:";
Compressed = FALSE;
CreationClassName = "Win32_LogicalDisk";
Description = "Local Fixed Disk";
DeviceID = "C:";
DriveType = 3;
FileSystem = "NTFS";
FreeSpace = "";
MaximumComponentLength = 255;
MediaType = 12;
Name = "C:";
Size = "";
SupportsDiskQuotas = FALSE;
SupportsFileBasedCompression = TRUE;
SystemCreationClassName = "Win32_ComputerSystem";
SystemName = "CN00208511";
VolumeName = "OSDisk";
VolumeSerialNumber = "3AFBC150";
}; instance of Win32_LogicalDisk
{
Access = 0;
Caption = "D:";
Compressed = FALSE;
CreationClassName = "Win32_LogicalDisk";
Description = "Local Fixed Disk";
DeviceID = "D:";
DriveType = 3;
FileSystem = "FAT32";
FreeSpace = "";
MaximumComponentLength = 255;
MediaType = 12;
Name = "D:";
Size = "";
SupportsDiskQuotas = FALSE;
SupportsFileBasedCompression = FALSE;
SystemCreationClassName = "Win32_ComputerSystem";
SystemName = "CN00208511";
VolumeName = "HP_TOOLS";
VolumeSerialNumber = "B2FBEEA0";
}; instance of Win32_LogicalDisk
{
Access = 0;
Caption = "E:";
Compressed = FALSE;
CreationClassName = "Win32_LogicalDisk";
Description = "Local Fixed Disk";
DeviceID = "E:";
DriveType = 3;
FileSystem = "NTFS";
FreeSpace = "";
MaximumComponentLength = 255;
MediaType = 12;
Name = "E:";
Size = "";
SupportsDiskQuotas = FALSE;
SupportsFileBasedCompression = TRUE;
SystemCreationClassName = "Win32_ComputerSystem";
SystemName = "CN00208511";
VolumeName = "HP_RECOVERY";
VolumeSerialNumber = "BCFC555B";
};

Win32_ NetworkAdapterConfiguration()方法

函数调用: interfaceList = w.Win32_NetworkAdapterConfiguration(IPEnabled=1)

函数功能: 用于网络接口信息对象,并存以列表形式

传入参数: *argv

IPEnabled: bool 类型,可传入1,默认为False,为 True 将显示 IP 信息

返回参数: interfaceList

interfaceList: list 类型,list 中每个元素均为一个网络接口信息的 object

网络接口信息 object 通过 object.name 调用,所含信息包括(部分具体信息已删除):

instance of Win32_NetworkAdapterConfiguration
{
Caption = "[00000011] Intel(R) Dual Band Wireless-AC 8260";
DatabasePath = "%SystemRoot%\\System32\\drivers\\etc";
DefaultIPGateway = {"192.168.1.1"};
Description = "Intel(R) Dual Band Wireless-AC 8260";
DHCPEnabled = TRUE;
DHCPLeaseExpires = "20170531002222.000000+480";
DHCPLeaseObtained = "20170530222222.000000+480";
DHCPServer = "192.168.1.1";
DNSDomain = "DHCP HOST";
DNSDomainSuffixSearchOrder = {"ericsson.se", "DHCP HOST"};
DNSEnabledForWINSResolution = FALSE;
DNSHostName = "";
DNSServerSearchOrder = {"", ""};
DomainDNSRegistrationEnabled = FALSE;
FullDNSRegistrationEnabled = TRUE;
GatewayCostMetric = {0};
Index = 11;
InterfaceIndex = 12;
IPAddress = {"", ""};
IPConnectionMetric = 20;
IPEnabled = TRUE;
IPFilterSecurityEnabled = FALSE;
IPSecPermitIPProtocols = {};
IPSecPermitTCPPorts = {};
IPSecPermitUDPPorts = {};
IPSubnet = {"", ""};
MACAddress = "";
ServiceName = "NETwNs64";
SettingID = "{}";
TcpipNetbiosOptions = 0;
WINSEnableLMHostsLookup = TRUE;
WINSScopeID = "";
};

利用wmi模块获取PC信息


获取PC信息的步骤主要有:

(1)打开存储信息的文件;

(2)实例化WMI类,利用各函数获取硬件信息类的列表;

(3)遍历硬件信息类列表,获取硬件信息并写入存储文件。

 import wmi
hardware=open('Hardware.txt', 'w') w=wmi.WMI() hardware.write("cpu type,main frequency:\n")
for processor in w.Win32_Processor():
hardware.write("Processor ID: %s" % processor.DeviceID)
hardware.write("\nProcess Name: %s" % processor.Name.strip()+'\n\n')
hardware.write('Memory size:')
totalMemSize=0
for memModule in w.Win32_PhysicalMemory():
totalMemSize+=int(memModule.Capacity)
hardware.write("\nMemory Capacity: %.2fMB" %((totalMemSize+1048575)/1048576)+'\n\n')
hardware.write('Hard disk usage:')
for disk in w.Win32_LogicalDisk (DriveType=3):
temp=disk.Caption+" %0.2f%% free" %(100.0 * int(disk.FreeSpace) / int(disk.Size))
hardware.write('\n'+temp)
hardware.write('\n')
hardware.write('\nIP and MAC:\n')
for interface in w.Win32_NetworkAdapterConfiguration(IPEnabled=1):
hardware.write('Network card driver information:')
hardware.write(interface.Description+'\n')
hardware.write('Network card MAC address:')
hardware.write(interface.MACAddress+'\n')
hardware.write('IP address:')
hardware.write(interface.IPAddress[0]+'\n')
hardware.write('Network IP interface')
hardware.write(interface.IPAddress[1]+'\n')
hardware.close()

最终可以在当前目录下得到一个包含硬件信息的文本文件。

Python的功能模块[0] -> wmi -> 获取 Windows 内部信息的更多相关文章

  1. python wmi模块 获取windows内部信息

    WMI (Windows Management Instrumentation) 模块可用于获取 Windows 内部信息,在使用Python获取Windows系统上的相关的信息可以使用WMI接口来获 ...

  2. Python使用wmi获取Windows相关信息

    在使用Python获取Windows系统上的相关的信息可以使用WMI接口来获取, 什么是wmi? WMI是一项核心的Windows管理技术,WMI作为一种规范和基础结构,通过它可以访问.配置.管理和监 ...

  3. Python WMI获取Windows系统信息 监控系统

    #!/usr/bin/env python # -*- coding: utf-8 -*- #http://www.cnblogs.com/liu-ke/ import wmi import os i ...

  4. 用PYTHON + PYWIN32 + WMI获取WINDOWS系统基本信息

    网上原码,去了DECODE编码的问题. PyScripter这个PYTHON的IDE工具在WIN下表现不错哟. 感觉比SPYDER,ERIC,SUBLEME TEXT3之类的好用呀.. #!/usr/ ...

  5. 利用python 与 wmi 获取WINDOWS基本信息

    #!/usr/bin/env python3.5 # -*- coding:utf8 -*- import platform import subprocess import wmi def serv ...

  6. Python WMI获取Windows系统信息

    #!/usr/bin/env python # -*- coding: utf-8 -*- #http://www.cnblogs.com/liu-ke/ import wmi import os i ...

  7. Python的功能模块[1] -> struct -> struct 在网络编程中的使用

    struct模块 / struct Module 在网络编程中,利用 socket 进行通信时,常常会用到 struct 模块,在网络通信中,大多数传递的数据以二进制流(binary data)存在. ...

  8. Python Django 功能模块

    Python Django模块 Django模块,是针对有django基础,对django功能进行模块化,方便下次使用. 一.注册模块 该注册采用邮箱验证,注册成功后会发送激活链接到邮箱. 邮箱验证参 ...

  9. Python的功能模块[4] -> pdb/ipdb -> 实现 Python 的单步调试

    pdb / ipdb 模块 / pdb / ipdb Module pdb 和 ipdb 的主要作用是用于 Python 程序的单步调试,Python 的调试可参考链接. 下面是一个简单的使用示例 i ...

随机推荐

  1. 【Hazard of Overfitting】林轩田机器学习基石

    首先明确了什么是Overfitting 随后,用开车的例子给出了Overfitting的出现原因 出现原因有三个: (1)dvc太高,模型过于复杂(开车开太快) (2)data中噪声太大(路面太颠簸) ...

  2. chrome flash插件改为自动运行

    1.情景展示 国内网页视频播放大部分用的都是flash插件,每次都要将默认改为允许,才能正常播放         能不能让flash插件在所有的网站上都能自动运行呢? 2.解决方案 第一步:打开fla ...

  3. IOS与Unity交互

    学习了宣雨松的两篇Unity和IOS交互的文章,自己动手做了下,遇到了些问题,在此记录 先说IOS发送消息给Unity:(文章地址:http://www.xuanyusong.com/archives ...

  4. js万年历

    首先,注意: 1.延迟执行     window.setTimeout(    ,     )     里面的时间是以毫秒计算的 2.间隔执行    window.setInterval(     , ...

  5. 团队项目-第八次scrum 会议

    时间:11.4 时长:30分钟 地点:F楼2层沙发休息处 工作情况 团队成员 已完成任务 待完成任务 解小锐 修复员工招聘时bug 完成员工commit函数的数值函数编写 陈鑫 实现雇佣与解雇功能的界 ...

  6. (总结)Nginx使用的php-fpm的两种进程管理方式及优化

    PS:前段时间配置php-fpm的时候,无意中发现原来它还有两种进程管理方式.与Apache类似,它的进程数也是可以根据设置分为动态和静态的. php-fpm目前主要又两个分支,分别对应于php-5. ...

  7. PHP文件操作函数及文件指针理解

    知识点: 一.fopen(),文件打开函数,读写参数有: 1.R  : 只读,指针在文件开头 2.r+:读写,指针同上 3.W :只写,写入前会删除文件内容,然后指针回到文件开头,文件不存在则创建 4 ...

  8. [bzoj1798][Ahoi2009]Seq 维护序列seq ([洛谷P3373]【模板】线段树 2)

    题目大意:有$n$个数,有$m$个操作,有三种: $1\;l\;r\;x:$把区间$[l,r]$内的数乘上$x$ $2\;l\;r\;x:$把区间$[l,r]$内的数加上$x$ $3\;l\;r:$询 ...

  9. 洛谷 P2173 [ZJOI2012]网络 解题报告

    P2173 [ZJOI2012]网络 题目描述 有一个无向图G,每个点有个权值,每条边有一个颜色.这个无向图满足以下两个条件: 对于任意节点连出去的边中,相同颜色的边不超过两条. 图中不存在同色的环, ...

  10. 使用jdk中的java.sql包中的方法进行jdbc连接

    首先说明用 java.sql包进行jdbc连接的步骤: 1.加载数据库的驱动.(一般是oracle和mysql,oracle的数据驱动名是:Oracle.jdbc.driver.OracleDrive ...