由于公司现阶段大多数应用软件都是基于Windows系统开发和部署,很多软件安装部署都是在windows server 2012、windows server 2008之类的服务器上,部门同事每次测试一轮迭代或者系统测试后,在写测试报告时都需要在报告中写上测试的服务器硬件配置,如CPU、操作系统版本、内存、磁盘等,需要去远程服务器然后在服务器上各种查看服务器配置,比较浪费时间。最近学习了Python相关的知识,发现使用PYWIN32+WMI模块可以获取windows系统基本信息,并安装pyinstaller库,可以将写好的python脚本打包编译成exe的可执行文件,并将运行的结果写到生成的txt文本文件中,方便查看,然后就可以在任何一台windows系统的服务器上运行,得到服务器配置。

基于以上实现方式,果断开始安装配置所需要的模块和库,至于安装过程百度上有很多人已经给了说明,根据自己的Python版本对应安装即可。下面贴下可以参考的安装链接文档:

PYWIN32+WMI模块安装:https://blog.csdn.net/franktan2010/article/details/46520563

pyinstaller模块安装:https://blog.csdn.net/Jarvis_F/article/details/80367865 或者 https://blog.csdn.net/whl826661099/article/details/79624326

我现在使用的Python版本是Python3.6,开发编辑工具是PyCharm,整个安装完成后打开PyCharm进入Settings在工程目录下看到有如下package说明环境OK了,如下图我的安装:

需要的库安装配置好了后,开始学习WMI模块提供的方法,根据上面的需求我们的目的是获取操作系统的信息,将获取的配置信息写到txt的文本文件中,并使用pyinstaller打包编译成exe文件,Python代码走起,如下代码为实现过程:

 '''
Code description:Create time:Developer:
'''
# -*- coding: utf-8 -*-
import wmi
import os print("###使用说明:请打开计算机基础配置文件夹,进入到dist目录下,双击运行:计算机基础配置信息.exe文件,"
"在命令行窗口输入保存的文件名,运行完成后打开生成的txt文本即可查看获取到的计算机基础配置信息###")
while True:
fname=input('enter filename>')
if os.path.exists(fname):
print("Error:'%s' already exists" %fname)
else:
break
# open函数在打开目录中进行检查,如果有则打开,否则新建
fobj=open(fname,'a',encoding='utf-8') # 获取操作系统版本信息
def sys_version():
c = wmi.WMI()
for sys in c.Win32_OperatingSystem():
print("操作系统版本:%s" % sys.Caption)
fobj.write('操作系统版本:' + sys.Caption)
print("操作系统位数:",sys.OSArchitecture)
fobj.write('\n' + '操作系统位数:' + sys.OSArchitecture)
# 获取机器IP和MAC地址以及网卡类型
def getIP():
c = wmi.WMI()
for interface in c.Win32_NetworkAdapterConfiguration(IPEnabled=1):
print("网口型号为:",interface.Description)
fobj.write('\n' + '网口型号为:' + interface.Description)
for ip_address in interface.IPAddress:
print(ip_address)
fobj.write('\n' + 'IP地址和MAC地址:' + ip_address)
# 获取CPU和内存大小
def cpu_and_mem():
c = wmi.WMI()
for cpu in c.Win32_Processor():
print("CPU: %s" % cpu.Name.strip())
fobj.write('\n' + 'CPU:' + cpu.Name.strip())
for Memory in c.Win32_PhysicalMemory():
print("内存大小: %.fGB" % ( (int(Memory.Capacity) / 1048576) /1024) )
fobj.write('\n' + "内存大小: %.fGB" % ( (int(Memory.Capacity) / 1048576) /1024) )
# 获取磁盘分区和各分区大小
def disk():
c = wmi.WMI()
# 获取硬盘分区
for physical_disk in c.Win32_DiskDrive():
for partition in physical_disk.associators("Win32_DiskDriveToDiskPartition"):
for logical_disk in partition.associators("Win32_LogicalDiskToPartition"):
print(physical_disk.Caption, partition.Caption, logical_disk.Caption)
fobj.write('\n' + '磁盘分区:' + physical_disk.Caption + partition.Caption + logical_disk.Caption)
# 获取各个磁盘分区大小
for disk in c.Win32_LogicalDisk(DriveType=3):
# print(disk.Caption, "%0.2f%% free" % (100.0 * int(disk.FreeSpace) / int(disk.Size)))
print(disk.Caption,"磁盘大小: %0.1fGB" % ((int(disk.Size) / 1048576) / 1024))
fobj.write('\n' +disk.Caption + "磁盘大小: %0.1fGB" % ((int(disk.Size) / 1048576) / 1024))
def main():
sys_version()
getIP()
cpu_and_mem()
disk()
if __name__ == '__main__':
main() fobj.close()

代码写好后,将脚本文件放入下载后解压的pyinstaller路径下,如下图:

然后cmd打开黑色命令行,cd 到上图的路径下,然后输入命令:python pyinstaller.py -F ***.py ,其中***.py为已经放置好的py脚本,回车,等待运行编译打包,看到successfully字样说明我们打包编译成功了,如下图:

然后在该路径下会生成一个以py文件名称同名的文件夹,在该文件夹下的dist下面就有编译好的exe可执行程序啦

后续可以将该exe可执行程序在任何一个windows机器上一键运行,得到运行结果的txt文本也在dist目录下,如下:

这样,这个小小的基于Python3编写的脚本小程序算是基本实现了最初我们想要达到的目的,以后再也不用各种查看服务器信息了,一键运行解决。O(∩_∩)O~~

Python使用WMI模块获取Windows系统的硬件信息,并使用pyinstaller库编译打包成exe的可执行文件的更多相关文章

  1. python使用wmi模块获取windows下的系统信息监控系统-乾颐堂

    Python用WMI模块获取Windows系统的硬件信息:硬盘分区.使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息. 本文实例讲述了python使用wmi模块获取w ...

  2. sigar获取Windows系统的硬件信息进行JAVA后台系统资源监控

    windows下,将sigar-amd64-winnt.dll复制到jdk的bin目录下或者拷贝到WEB-INF/lib下 linux下,将libsigar-amd64-linux.so拷贝到jdk的 ...

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

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

  4. Windows系统及硬件信息读取

    Windows桌面端开发常常会需要读取系统信息或硬件信息作为用户标识,比如用于确认该设配是否已经激活程序.也可以使用随机生成的UUID来作为唯一标识,但是如果重装系统或重装软件都有可能导致标识丢失,因 ...

  5. Inxi:获取Linux系统和硬件信息的神器

    导读 在这篇文章里,我们将看到如何使用inxi来获取这些详情信息.在论坛技术支持中,它可以作为调试工具,迅速确定用户的系统配置和硬件信息. Inxi是一个可以获取完整的系统和硬件详情信息的命令行工具, ...

  6. python用WMI模块获取系统命名空间

    可以和winmgmts的查询页面对应 from win32com.client import GetObject import pywintypes result=[] def enum_namesp ...

  7. Python用WMI模块获取windowns系统信息

    安装vmi https://pypi.org/project/WMI/#history 脚本如下: #!/usr/bin/env python #coding:utf- import wmi impo ...

  8. python之psutil模块(获取系统性能数据)

    psutil模块 1.介绍 psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等) ...

  9. 获取Windows系统中的所有可用和在用串口

    目的:获取Windows系统中的所有可用和在用串口 方法:注册表查询法 优点:简单.实用.快速.无遗漏,无多余结果. 说明:另外还有8种方法可以枚举串口,但都不如此法. 代码和详细注释如下: //-- ...

随机推荐

  1. timesten报错:error while loading shared libraries: libaio.so.1: cannot open shared object file : No such file or directory

    我遇到的这个错是因为缺少依赖:libaio 直接yum -y install libaio 然后重新安装就OK了

  2. lavarel5.2官方文档阅读——架构基础

    <目录> 1.请求的生命周期 2.应用的架构 3.服务提供者 4.服务容器 5.Facades外立面(从这节起,看中文版的:https://phphub.org/topics/1783) ...

  3. Go语言基础之包

    Go语言基础之包 在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基础之上的.本文介绍了Go语言中如何定义包.如何导出包的内容及如何导入其他包. Go语言的包(packag ...

  4. Golang Go Go Go part1:安装及运行

    golang 知识图谱 https://www.processon.com/view/link/5a9ba4c8e4b0a9d22eb3bdf0 一.安装 最新版本安装包地址:https://gola ...

  5. Data Center(5): 实例

    我们来分析从外网访问内网的服务的具体过程: 首先我们看DNS和Load Balancer是怎么工作的. 客户端要访问我们的系统,发送了一个https请求,https://nova.mycompany. ...

  6. 依赖注入[6]: .NET Core DI框架[编程体验]

    毫不夸张地说,整个ASP.NET Core框架是建立在一个依赖注入框架之上的,它在应用启动时构建请求处理管道过程中,以及利用该管道处理每个请求过程中使用到的服务对象均来源于DI容器.该DI容器不仅为A ...

  7. 依赖注入[2]: 基于IoC的设计模式

    正如我们在<控制反转>提到过的,很多人将IoC理解为一种"面向对象的设计模式",实际上IoC自身不仅与面向对象没有必然的联系,它也算不上是一种设计模式.一般来讲,设计模 ...

  8. [Swift]LeetCode424. 替换后的最长重复字符 | Longest Repeating Character Replacement

    Given a string that consists of only uppercase English letters, you can replace any letter in the st ...

  9. [Swift]LeetCode598. 范围求和 II | Range Addition II

    Given an m * n matrix M initialized with all 0's and several update operations. Operations are repre ...

  10. Spring Boot 面试题

    1.列举一些SpringBoot特性 1.创建独立的Spring项目 2.内置Tomcat和Jetty容器 3.提供一个starter POMs来简化Maven配置 4.提供了一系列大型项目中常见的非 ...