一、需求

由于最近负责电脑资产清查的工作,有100多台分散的电脑需要获得用户名、MAC地址、硬盘序列号、硬盘品牌

一般方法:

(1)查看系统用户名

(2) 获取MAC地址




python获取C盘用户名 python获取电脑用户名和密码_py获取前端的参数


windos命令行使用ipconfig /all

(3)使用Hdtune软件查看硬盘序列号、硬盘品牌


python获取C盘用户名 python获取电脑用户名和密码_WMI_02

HDtune5.0


(4)把上述信息手动输入一个Excel总表

以上操作 ,一轮下来大约5~10分钟

还是写代码吧,把每台电脑的上述信息都统一输出为一个子excel,最后再将所有xls文件放在一个文件夹中,利用VBA合并到一个表就可以了交差了

一年多没写过脚本,折腾了半天,基本完成

二、简单笔记

环境:Win7 64+Python3.7

Part 1 用到的库函数

(1)getpass库的getuser方法,获得当前用户名

(2)WMI库的Win32_DiskDrive类,调用SerialNumber和Caption方法获取物理硬盘的硬盘序列号、硬盘品牌

参见

Win32_DiskDrive class - Windows applicationsdocs.microsoft.com


python获取C盘用户名 python获取电脑用户名和密码_py获取前端的参数_03


(3)通过WMI库Win32_NetworkAdapterConfiguration类获取MAC地址,调用interface.MACAddress方法

参见

Win32_NetworkAdapterConfiguration class - Windows applicationsdocs.microsoft.com

python获取C盘用户名 python获取电脑用户名和密码_py获取前端的参数_03


(4)xlwt库,写入本地xls文件(很简单)

代码很简单


from wmi import WMI
from getpass import getuser
from xlwt import Workbook

c = WMI () 
listValue = []

#获取用户名
userName = getuser()
listValue.append( userName )
#获取MAC和IP地址
for interface in c.Win32_NetworkAdapterConfiguration ( IPEnabled= True ):
    listValue.append( interface.MACAddress )
#获取SerialNumber和Caption
for physical_disk in c.Win32_DiskDrive():	
	#SerialNumber : Number allocated by the manufacturer to identify the physical media.
	listValue.append( physical_disk.SerialNumber ) 
	#Caption : Short description of the object.
	listValue.append( physical_disk.Caption )


Part 2 py文件转换为exe文件

最后一步,利用pyinstaller将py文件打包成可执行文件。

先试了一下默认的打包命令


Pyinstaller diskinfo.py


生成了一堆文件


python获取C盘用户名 python获取电脑用户名和密码_py获取前端的参数_05


这堆是啥我得研究一下。。。等等,我只是个写脚本的,其他的有空再研究,可执行文件在disk文件夹里,1.8M


python获取C盘用户名 python获取电脑用户名和密码_Win32_06


执行,费时2s左右,生成所需xls文件


python获取C盘用户名 python获取电脑用户名和密码_WMI_07


但是这一堆文件有点麻烦,每个电脑还得拷过来拷过去,查了下资料,发现可以做成单个执行文件,编译的时候时候加“-F”参数就行了


Pyinstaller -F diskinfo.py


现在就没有一堆奇怪的东西了,单个可执行文件一共9.3M


python获取C盘用户名 python获取电脑用户名和密码_python获取C盘用户名_08


进阶操作参考

PyInstaller Manualpyinstaller.readthedocs.io

Part 3

又试了几台都没什么问题,还未解决的问题应该还有不少:

(1) 现在都是64位系统,可以执行,32位系统没法用

(2) 单个文件打包后比较大,搜了一些解决方案,回去重新调试一下

(3) 手生,调试的过程中踩了很多基础坑,回去把《Python基础教程》复习一下