• Python笔记 之 wmi模块


    运行环境

    pip 22.0.4
    python 3.10
    windows 10 专业版

    安装wmi模块

    pip3.10 install wmi

    自定义类

    说明:不同环境相关子类的属性各不相同,可以通过将遍历结果打印出来根据实际情况进行筛选。

    import wmi
    
    class Computer():
    	def __init__(self):
    		self.cmp = wmi.WMI();
    		self.infos=[]
    		self.showInfos()
    
    	def showInfos(self):
    		self.infos.append('电脑配置:')
    		# print(dir(self.cmp.__dict__))
    		# 获取主板信息
    		self.infos.append('\n')
    		self.infos.append('主板信息:')
    		for bbd in self.cmp.Win32_BaseBoard():
    			self.infos.append('制造商:%s' % bbd.Manufacturer)
    			self.infos.append('主板型号:%s' % bbd.Product)
    			self.infos.append('服务编号:%s' % bbd.SerialNumber)
    			self.infos.append('主板状态:%s' % bbd.Status)
    		# 获取处理器信息
    		self.infos.append('\n')
    		self.infos.append('处理器信息:')
    		for cpu in self.cmp.Win32_Processor():
    			# print(cpu)
    			self.infos.append('处理器型号:%s' % cpu.Name)
    			self.infos.append('数据位数:%d' % cpu.DataWidth)
    			self.infos.append('二级缓存:%d' % cpu.L2CacheSize)
    			self.infos.append('三级缓存:%d' % cpu.L3CacheSize)
    			self.infos.append('核心数量:%d' % cpu.NumberOfCores)
    			self.infos.append('逻辑核数:%d' % cpu.NumberOfLogicalProcessors)
    			self.infos.append('CPU状态:%s' % cpu.Status)
    		# 查看物理磁盘信息
    		self.infos.append('\n')
    		self.infos.append('物理磁盘信息:')
    		for pdisk in self.cmp.Win32_DiskDrive():
    			# print (pdisk)
    			self.infos.append('磁盘:%d'%pdisk.Index)
    			self.infos.append('磁盘名称:%s'%pdisk.Caption)
    			self.infos.append('服务编号:%s'%pdisk.SerialNumber.strip())
    			self.infos.append('磁盘大小:' + str(round(int(pdisk.Size) / (1024 * 1024 * 1024), 0)))
    			self.infos.append('磁盘状态:' + pdisk.Status)
    		# 查看磁盘分区信息
    		self.infos.append('\n')
    		self.infos.append('磁盘分区信息:')
    		for ldisk in self.cmp.Win32_logicalDisk():
    			if ldisk.DriveType == 3:
    				# print(ldisk)
    				self.infos.append(ldisk.Name)
    				self.infos.append('文件系统:'+ldisk.FileSystem)
    				self.infos.append('磁盘大小:'+str(round(int(ldisk.Size)/(1024*1024*1024),0)))
    				self.infos.append('剩余空间:' + str(round(int(ldisk.FreeSpace) / (1024 * 1024 * 1024), 0)))
    				self.infos.append('磁盘空置率:%0.2f%%'%round(int(ldisk.FreeSpace) /int(ldisk.Size)*100,2))
    		# 查看BIOS信息
    		self.infos.append('\n')
    		self.infos.append('BIOS信息:')
    		for bios in self.cmp.Win32_BIOS():
    			self.infos.append('制造商:%s' % bios.Manufacturer)
    			self.infos.append('服务编号:%s' % bios.SerialNumber)
    			self.infos.append('BIOS版本号:%s' % bios.SMBIOSBIOSVersion)
    			self.infos.append('BIOS版本号(制造商):%s' % bios.Version)
    		# 查看网络适配器信息
    		self.infos.append('\n')
    		self.infos.append('网络适配器信息:')
    		for mac in self.cmp.Win32_NetworkAdapter():
    			if mac.PhysicalAdapter:
    				self.infos.append('适配器信息:%s' % mac.AdapterType)
    				self.infos.append('适配器描述:%s' % mac.Description)
    				self.infos.append('适配器GUID:%s' % mac.GUID)
    				self.infos.append('适配器Mac地址:%s' % mac.MACAddress)
    		# 查看进程信息
    		self.infos.append('\n')
    		self.infos.append('进程信息:')
    		for pcs in self.cmp.Win32_Process():
    			self.infos.append('进程ID:%s' % pcs.ProcessId)
    			self.infos.append('进程名称:%s' % pcs.Name)
    			self.infos.append('启动时间:%s' %  pcs.CreationDate.split('.')[0])
    			self.infos.append('运行地址:%s' % pcs.CommandLine)
    		# 获取本机Ip地址
    		self.infos.append('\n')
    		self.infos.append('本机Ip地址:')
    		for ips in self.cmp.Win32_NetworkAdapterConfiguration():
    			if ips.IPAddress:
    				self.infos.append('Ip地址:%s' % str(ips.IPAddress[0]))
    				# print(ips.IPAddress[0])
    				# print(type(ips.IPAddress))
    				self.infos.append('子网掩码:%s' % ips.IPSubnet[0])
    				self.infos.append('网关地址:%s' % ips.DefaultIPGateway)
    				self.infos.append('Dns地址:%s' % ips.DNSServerSearchOrder)
    				self.infos.append('是否DHCP:%s' % ips.DHCPEnabled)	
    
    if __name__ == '__main__':
    	cmp = Computer()
    	for item in cmp.infos:
    		print (item)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94

    未完待续

  • 相关阅读:
    即将步入大四,开始我最真情的告白
    多线程导入excel
    探索实人认证API:保障在线交互安全的关键一步
    Promise 静态 API 的使用方法
    systemverilog学习 --- 代码重用
    【洛谷 P1996】约瑟夫问题 题解(循环链表+模拟+循环)
    【李宏毅】机器学习-RNN
    【第四部分 | JavaScript 基础】1:JS概述、变量及输入输出
    《剑指offer》【剑指 Offer 19. 正则表达式匹配】
    【侯捷C++面向对象高级编程】(下)
  • 原文地址:https://blog.csdn.net/weixin_50648794/article/details/126348522