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. android系统联系人分组特效实现(2)---字母表快速滚动

    要实现这种功能,只需要在   android系统联系人分组特效实现(1)---分组导航和挤压动画  的基础上再加上一个自定义控件即可完成. 1.新建项目,继续新建一个java类,BladeView,用 ...

  2. 201621123033 《Java程序设计》第3周学习总结

    第三周作业 1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之间的联系.步骤如下: 1 ...

  3. 16个简单实用的.htaccess技巧

    .htaccess 文件 (Hypertext Access file) 是Apache Web服务器的一个非常强大的配置文件,对于这个文件,Apache有一堆参数可以让你配置出几乎随心所欲的功能.. ...

  4. 点对点协议(Point-to-Point Protocol)

    简介 点对点协议简称PPP协议,工作在数据链路层.设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机. 网桥和路由器之间简单连接的一种共通的解决方案. PPP协议的组成 建立 ...

  5. BZOJ1180 [CROATIAN2009]OTOCI 【LCT】

    题目 给出n个结点以及每个点初始时对应的权值wi.起始时点与点之间没有连边.有3类操作: 1.bridge A B:询问结点A与结点B是否连通.如果是则输出"no".否则输出&qu ...

  6. 启动、停止、删除Windows服务

    启动: @echo.服务启动...... @echo off @sc create Service_SMS binPath= "D:\公司制度等文件\项目\河北劳动力市场检测系统\Windo ...

  7. bzoj 4443 [Scoi2015]小凸玩矩阵 网络流,二分

    [Scoi2015]小凸玩矩阵 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1564  Solved: 734[Submit][Status][Di ...

  8. python使用openpyxl操作excel

    def initExcel(): file_path = "test.xlsx" file = load_workbook(file_path) table = file[&quo ...

  9. YV12 NV12区别

    用videoCapture和IAMStreamConfig拿到的支持的格式列表.发现支持2中图像格式,YV12和NV12.具体是怎么样的内存分布不知道.查了些文档.自己修改了几个图.看出了点端倪 YV ...

  10. Android消息推送解决方案

    前言 消息推送在Android开发中应用的场景是越来越多了,比如说电商产品进行活动宣传.资讯类产品进行新闻推送等等,如下图: 推送消息截图 本文将介绍Android中实现消息推送的7种主流解决方案 目 ...