Python使用WMI模塊獲取Windows系統的硬件信息,並使用pyinstaller庫編譯打包成exe的可執行文件

      因爲公司現階段大多數應用軟件都是基於Windows系統開發和部署,不少軟件安裝部署都是在windows server 20十二、windows server 2008之類的服務器上,部門同事每次測試一輪迭代或者系統測試後,在寫測試報告時都須要在報告中寫上測試的服務器硬件配置,如CPU、操做系統版本、內存、磁盤等,須要去遠程服務器而後在服務器上各類查看服務器配置,比較浪費時間。最近學習了Python相關的知識,發現使用PYWIN32+WMI模塊能夠獲取windows系統基本信息,並安裝pyinstaller庫,能夠將寫好的python腳本打包編譯成exe的可執行文件,並將運行的結果寫到生成的txt文本文件中,方便查看,而後就能夠在任何一臺windows系統的服務器上運行,獲得服務器配置。python

基於以上實現方式,果斷開始安裝配置所須要的模塊和庫,至於安裝過程百度上有不少人已經給了說明,根據本身的Python版本對應安裝便可。下面貼下能夠參考的安裝連接文檔:小程序

PYWIN32+WMI模塊安裝:https://blog.csdn.net/franktan2010/article/details/46520563  windows

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代碼走起,以下代碼爲實現過程:工具

 1 '''
 2   Code description:Create time:Developer:
 3 '''
 4 # -*- coding: utf-8 -*-
 5 import wmi
 6 import os
 7 
 8 print("###使用說明:請打開計算機基礎配置文件夾,進入到dist目錄下,雙擊運行:計算機基礎配置信息.exe文件,"
 9       "在命令行窗口輸入保存的文件名,運行完成後打開生成的txt文本便可查看獲取到的計算機基礎配置信息###")
10 while True:
11     fname=input('enter filename>')
12     if os.path.exists(fname):
13         print("Error:'%s' already exists" %fname)
14     else:
15         break
16 # open函數在打開目錄中進行檢查,若是有則打開,不然新建
17 fobj=open(fname,'a',encoding='utf-8')
18 
19 # 獲取操做系統版本信息
20 def sys_version():
21     c = wmi.WMI()
22     for sys in c.Win32_OperatingSystem():
23         print("操做系統版本:%s" % sys.Caption)
24         fobj.write('操做系統版本:' + sys.Caption)
25         print("操做系統位數:",sys.OSArchitecture)
26         fobj.write('\n' + '操做系統位數:' + sys.OSArchitecture)
27 # 獲取機器IP和MAC地址以及網卡類型
28 def getIP():
29     c = wmi.WMI()
30     for interface in c.Win32_NetworkAdapterConfiguration(IPEnabled=1):
31         print("網口型號爲:",interface.Description)
32         fobj.write('\n' + '網口型號爲:' + interface.Description)
33         for ip_address in interface.IPAddress:
34             print(ip_address)
35             fobj.write('\n' + 'IP地址和MAC地址:' + ip_address)
36 # 獲取CPU和內存大小
37 def cpu_and_mem():
38     c = wmi.WMI()
39     for cpu in c.Win32_Processor():
40         print("CPU: %s" % cpu.Name.strip())
41         fobj.write('\n' + 'CPU:' + cpu.Name.strip())
42     for Memory in c.Win32_PhysicalMemory():
43         print("內存大小: %.fGB" % ( (int(Memory.Capacity) / 1048576) /1024) )
44         fobj.write('\n' + "內存大小: %.fGB" % ( (int(Memory.Capacity) / 1048576) /1024) )
45 # 獲取磁盤分區和各分區大小
46 def disk():
47     c = wmi.WMI()
48     # 獲取硬盤分區
49     for physical_disk in c.Win32_DiskDrive():
50         for partition in physical_disk.associators("Win32_DiskDriveToDiskPartition"):
51             for logical_disk in partition.associators("Win32_LogicalDiskToPartition"):
52                 print(physical_disk.Caption, partition.Caption, logical_disk.Caption)
53                 fobj.write('\n' + '磁盤分區:' + physical_disk.Caption + partition.Caption + logical_disk.Caption)
54     # 獲取各個磁盤分區大小
55     for disk in c.Win32_LogicalDisk(DriveType=3):
56         # print(disk.Caption, "%0.2f%% free" % (100.0 * int(disk.FreeSpace) / int(disk.Size)))
57         print(disk.Caption,"磁盤大小: %0.1fGB" % ((int(disk.Size) / 1048576) / 1024))
58         fobj.write('\n' +disk.Caption + "磁盤大小: %0.1fGB" % ((int(disk.Size) / 1048576) / 1024))
59 def main():
60     sys_version()
61     getIP()
62     cpu_and_mem()
63     disk()
64 if __name__ == '__main__':
65     main()
66 
67 fobj.close()

代碼寫好後,將腳本文件放入下載後解壓的pyinstaller路徑下,以下圖:學習

而後cmd打開黑色命令行,cd 到上圖的路徑下,而後輸入命令:python pyinstaller.py -F ***.py ,其中***.py爲已經放置好的py腳本,回車,等待運行編譯打包,看到successfully字樣說明咱們打包編譯成功了,以下圖:測試

而後在該路徑下會生成一個以py文件名稱同名的文件夾,在該文件夾下的dist下面就有編譯好的exe可執行程序啦spa

後續能夠將該exe可執行程序在任何一個windows機器上一鍵運行,獲得運行結果的txt文本也在dist目錄下,以下:操作系統

這樣,這個小小的基於Python3編寫的腳本小程序算是基本實現了最初咱們想要達到的目的,之後不再用各類查看服務器信息了,一鍵運行解決。O(∩_∩)O~~

相關文章
相關標籤/搜索