[Python进阶] 获取计算机相关信息:WMI

2023-10-23 10:31

本文主要是介绍[Python进阶] 获取计算机相关信息:WMI,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

6.13 获取计算机相关信息:WMI

6.13.1 前言

在计算机的日常使用或者编程开发时,有时候需要知道计算机的一些相关信息,比如:计算机硬件信息,包括:CPU、内存、键鼠、显示器、网络状况等。计算机操作系统信息,包括:磁盘分区、服务、账号、进程等。
在Python中,WMI(Windows Management Instrumentation)库是一种用于与Windows操作系统进行交互的接口。它提供了一组用于查询、管理和配置Windows系统信息的功能。
WMI库使得Python程序可以与Windows操作系统进行通信,并获取关于系统硬件、软件和网络配置的信息。它允许开发人员在Python中执行许多常见的系统管理任务,例如获取计算机的硬件配置、网络连接信息、操作系统版本和用户信息等。
使用WMI库,开发人员可以编写Python程序来查询和操作Windows注册表、管理系统事件日志、执行远程操作以及与Windows服务进行交互等。
注意:WMI库只能在Windows系统中使用,该库不是一个跨平台库。
安装
该模块需要 win32com 的支持,环境安装如下:

pip install wmi
pip install pypiwin32

实例化

import wmi
Wmi = wmi.WMI()

WMI库主要可以查询两类信息:硬件信息类和操作系统类,其中的类名如下:

// 硬件信息类名
Win32_Processor, // CPU 处理器
Win32_PhysicalMemory, // 物理内存条
Win32_Keyboard, // 键盘
Win32_PointingDevice, // 点输入设备,包括鼠标。
Win32_FloppyDrive, // 软盘驱动器
Win32_DiskDrive, // 硬盘驱动器
Win32_CDROMDrive, // 光盘驱动器
Win32_BaseBoard, // 主板
Win32_BIOS, // BIOS 芯片
Win32_ParallelPort, // 并口
Win32_SerialPort, // 串口
Win32_SerialPortConfiguration, // 串口配置
Win32_SoundDevice, // 多媒体设置,一般指声卡。
Win32_SystemSlot, // 主板插槽 (ISA & PCI & AGP)
Win32_USBController, // USB 控制器
Win32_NetworkAdapter, // 网络适配器
Win32_NetworkAdapterConfiguration, // 网络适配器设置
Win32_Printer, // 打印机
Win32_PrinterConfiguration, // 打印机设置
Win32_PrintJob, // 打印机任务
Win32_TCPIPPrinterPort, // 打印机端口
Win32_POTSModem, // MODEM
Win32_POTSModemToSerialPort, // MODEM 端口
Win32_DesktopMonitor, // 显示器
Win32_DisplayConfiguration, // 显卡
Win32_DisplayControllerConfiguration, // 显卡设置
Win32_VideoController, // 显卡细节。
Win32_VideoSettings, // 显卡支持的显示模式。

// 操作系统
Win32_TimeZone, // 时区
Win32_SystemDriver, // 驱动程序
Win32_DiskPartition, // 磁盘分区
Win32_LogicalDisk, // 逻辑磁盘
Win32_LogicalDiskToPartition, // 逻辑磁盘所在分区及始末位置。
Win32_LogicalMemoryConfiguration, // 逻辑内存配置
Win32_PageFile, // 系统页文件信息
Win32_PageFileSetting, // 页文件设置
Win32_BootConfiguration, // 系统启动配置
Win32_ComputerSystem, // 计算机信息简要
Win32_OperatingSystem, // 操作系统信息
Win32_StartupCommand, // 系统自动启动程序
Win32_Service, // 系统安装的服务
Win32_Group, // 系统管理组
Win32_GroupUser, // 系统组帐号
Win32_UserAccount, // 用户帐号
Win32_Process, // 系统进程
Win32_Thread, // 系统线程
Win32_Share, // 共享
Win32_NetworkClient, // 已安装的网络客户端
Win32_NetworkProtocol, // 已安装的网络协议

6.13.2 获取计算机系统相关信息

from wmi import WMIWmi = WMI()
CS = Wmi.Win32_ComputerSystem()[0]  # 计算机系统,即:CS
CSCaption = CS.Caption  # CS标题(计算机名)
CSDNSHostName = CS.DNSHostName  # CS DNSHostName
CSDomain = CS.Domain  # CS域名
CSManufacturer = CS.Manufacturer  # CS设备制造商:'HP'
CSModel = CS.Model  # CS设备型号:'HP ProDesk 480 G4 PCI MT'
CSName = CS.Name  # CS名称
CSNumberOfLogicalProcessors = CS.NumberOfLogicalProcessors  # 逻辑处理器数:8
CSNumberOfProcessors = CS.NumberOfProcessors  # 处理器数:1
CSPartOfDomain = CS.PartOfDomain  # 在域中:bool
CSTotalPhysicalMemory = int(CS.TotalPhysicalMemory) // 1024 ** 2  # 内存:8087
CSUserName = CS.UserName  # 当前用户名
CSWorkgroup = CS.Workgroup  # 所在用户组

6.13.3 获取操作系统相关信息

from wmi import WMIWmi = WMI()
OS = Wmi.Win32_OperatingSystem()[0]  # 操作系统
OSBuildNumber = OS.BuildNumber  # OS版本号:15063
OSCaption = OS.Caption  # OS名称:Microsoft Windows 10 专业版
OSCSName = OS.CSName  # OS CSName
OSFreePhysicalMemory = int(OS.FreePhysicalMemory) // 1024  # OS可用物理内存:1230956
OSFreeVirtualMemory = int(OS.FreeVirtualMemory) // 1024  # OS可用虚拟内存:2572820
OSInstallDate = OS.InstallDate  # OS安装日期:20180709125022.000000+480
OSLastBootUpTime = OS.LastBootUpTime  # OS上次BootUp时间:20221114084011.497622+480
OSLocalDateTime = OS.LocalDateTime  # OS本地时间:20221118172710.321000+480
OSManufacturer = OS.Manufacturer  # OS制造商:Microsoft Corporation
OSNumberOfUsers = OS.NumberOfUsers  # OS本地用户数:7
OSArchitecture = OS.OSArchitecture  # OS架构:64 位
OSPrimary = OS.Primary  # 是否主要OS?:True
OSSerialNumber = OS.SerialNumber  # OS产品ID
OSSystemDirectory = OS.SystemDirectory  # OS目录:C:\Windows\system32
OSSystemDrive = OS.SystemDrive  # OS驱动分区:C:
OSTotalVirtualMemorySize = int(OS.TotalVirtualMemorySize) // 1024  # OS总虚拟内存大小:17194204
OSTotalVisibleMemorySize = int(OS.TotalVisibleMemorySize) // 1024  # OS总可见内存大小:8281308
OSVersion = OS.Version  # OS版本:10.0.15063
OSWindowsDirectory = OS.WindowsDirectory  # OS Windows目录:C:\Windows

6.13.4 获取CPU相关信息

from wmi import WMIWmi = WMI()
CPU = Wmi.Win32_Processor()[0]
CPUCaption = CPU.Caption  # CPU标题:'Intel64 Family 6 Model 94 Stepping 3 '
CPUDescription = CPU.Description  # CPU描述:'Intel64 Family 6 Model 94 Stepping 3 '
CPUManufacturer = CPU.Manufacturer  # CPU制造商:'GenuineIntel'
CPUName = CPU.Name  # CPU型号:'Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz '

6.13.5 获取网卡相关信息

from wmi import WMIWmi = WMI()
NETCaption = []
NETDefaultIPGateway = []
NETDescription = []
NETDHCPEnabled = []
NETDNSServerSearchOrder = []
NETIPAddress = []
NETIPEnabled = []
NETIPSubnet = []
NETMACAddress = []
NETs = [_ for _ in Wmi.Win32_NetworkAdapterConfiguration() if _.MACAddress]  # IPEnabled 为 True 表示在用,可以通过 MACAddress 筛选出有效的网卡
for _ in NETs:NETCaption.append(_.Caption)  # NET标题 [00000011] Realtek PCIe GBE Family ControllerNETDefaultIPGateway.append(_.DefaultIPGateway)  # NET标题 ('默认网关',)NETDescription.append(_.Description)  # NET描述 Realtek PCIe GBE Family ControllerNETDHCPEnabled.append(_.DHCPEnabled)  # NET 开启DHCP TrueNETDNSServerSearchOrder.append(_.DNSServerSearchOrder)  # NET DNS服务器 ('主服务器', '备服务器')NETIPAddress.append(_.IPAddress)  # NET IP地址 ('ipv4', 'ipv6')NETIPEnabled.append(_.IPEnabled)  # NET 启用IP TrueNETIPSubnet.append(_.IPSubnet)  # NET IP子网掩码NETMACAddress.append(_.MACAddress)  # NET MAC地址

6.13.6 获取硬盘相关信息

from wmi import WMIWmi = WMI()
DDCapabilityDescriptions = []
DDCaption = []
DDDescription = []
DDInterfaceType = []
DDMediaType = []
DDModel = []
DDPartitions = []
DDSerialNumber = []
DDSize = []
DDSystemName = []
DDs = [_ for _ in Wmi.Win32_DiskDrive() if _.InterfaceType != 'USB']  # 硬盘
for _ in DDs:DDCapabilityDescriptions.append(_.CapabilityDescriptions)  # 功能描述 ('Random Access', 'Supports Writing')DDCaption.append(_.Caption)  # 磁盘型号 SAMSUNG MZVLW128HEGR-000H1DDDescription.append(_.Description)  # 磁盘描述 磁盘驱动器DDInterfaceType.append(_.InterfaceType)  # 接口类型 SCSIDDMediaType.append(_.MediaType)  # 媒体类型 Fixed hard disk mediaDDModel.append(_.Model)  # 硬盘型号 SAMSUNG MZVLW128HEGR-000H1DDPartitions.append(_.Partitions)  # 分区数 3DDSerialNumber.append(_.SerialNumber)  # 序列号 0025_38B2_81BB_3567.DDSize.append(int(_.Size) // 1024 ** 3)  # 硬盘大小 128034708480

6.13.7 获取显示器相关信息

from wmi import WMIWmi = WMI()
DMCaption = []
DMDescription = []
DMMonitorType = []
DMName = []
DMPixelsPerXLogicalInch = []
DMPixelsPerYLogicalInch = []
DMScreenHeight = []
DMScreenWidth = []
DMs = Wmi.Win32_DesktopMonitor()
for _ in DMs:DMCaption.append(_.Caption)  # 显示器标题 默认监视器DMDescription.append(_.Description)  # 显示器描述 默认监视器DMMonitorType.append(_.MonitorType)  # 显示器类型 通用即插即用监视器DMName.append(_.Name)  # 显示器类型 通用即插即用监视器DMPixelsPerXLogicalInch.append(_.PixelsPerXLogicalInch)  # 显示器X方向上,每逻辑1英寸有多少个像素 96DMPixelsPerYLogicalInch.append(_.PixelsPerYLogicalInch)  # 显示器Y方向上,每逻辑1英寸有多少个像素 96DMScreenHeight.append(_.ScreenHeight)  # 显示器纵坐标显示像素 900DMScreenWidth.append(_.ScreenWidth)  # 显示器横坐标显示像素 1440

这篇关于[Python进阶] 获取计算机相关信息:WMI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/267282

相关文章

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e