如何通过Python获取NVMe驱动器的安装日期
获取NVMe驱动器安装日期的Python实现方法
在Windows系统中,你可以通过两种常用方式用Python获取NVMe驱动器的安装/首次安装日期:调用WMI接口,或通过子进程执行PowerShell命令。以下是具体实现:
方法一:使用pywin32调用WMI接口
WMI(Windows Management Instrumentation)是Windows系统的原生管理接口,可直接查询硬件属性。
步骤1:安装依赖
先安装pywin32库:
pip install pywin32
步骤2:实现代码
import win32com.client from datetime import datetime def get_nvme_install_dates(): wmi = win32com.client.GetObject("winmgmts:") nvme_disks = wmi.InstancesOf("Win32_DiskDrive") results = [] for disk in nvme_disks: # 筛选NVMe接口的磁盘设备 if disk.InterfaceType == "NVMe": # 转换WMI日期格式(原始格式为YYYYMMDDHHMMSS.FFFFFF+UUU) install_date = None if disk.InstallDate: install_date = datetime.strptime(disk.InstallDate.split('.')[0], "%Y%m%d%H%M%S") first_install_date = None if disk.FirstInstallDate: first_install_date = datetime.strptime(disk.FirstInstallDate.split('.')[0], "%Y%m%d%H%M%S") results.append({ "设备ID": disk.DeviceID, "型号": disk.Model, "安装日期": install_date, "首次安装日期": first_install_date }) return results # 调用并打印结果 for disk_info in get_nvme_install_dates(): print(f"设备ID: {disk_info['设备ID']}") print(f"型号: {disk_info['型号']}") print(f"安装日期: {disk_info['安装日期']}") print(f"首次安装日期: {disk_info['首次安装日期']}\n")
方法二:通过subprocess调用PowerShell命令
如果不想额外安装第三方库,可以直接调用PowerShell命令获取WMI数据,再解析结果。
实现代码
import subprocess import json from datetime import datetime def get_nvme_install_dates_via_powershell(): # PowerShell命令:筛选NVMe磁盘,返回JSON格式的属性数据 ps_cmd = """ Get-WmiObject Win32_DiskDrive | Where-Object { $_.InterfaceType -eq 'NVMe' } | Select-Object DeviceID, Model, InstallDate, FirstInstallDate | ConvertTo-Json """ # 执行命令并捕获输出 result = subprocess.run( ["powershell", "-Command", ps_cmd], capture_output=True, text=True, encoding='utf-8' ) if result.returncode != 0: print(f"执行错误: {result.stderr}") return [] # 解析JSON并转换日期格式 nvme_disks = json.loads(result.stdout) for disk in nvme_disks: if disk.get("InstallDate"): disk["InstallDate"] = datetime.strptime(disk["InstallDate"].split('.')[0], "%Y%m%d%H%M%S") if disk.get("FirstInstallDate"): disk["FirstInstallDate"] = datetime.strptime(disk["FirstInstallDate"].split('.')[0], "%Y%m%d%H%M%S") return nvme_disks # 调用并打印结果 for disk_info in get_nvme_install_dates_via_powershell(): print(f"设备ID: {disk_info['DeviceID']}") print(f"型号: {disk_info['Model']}") print(f"安装日期: {disk_info['InstallDate']}") print(f"首次安装日期: {disk_info['FirstInstallDate']}\n")
注意事项
- 两种方法仅适用于Windows系统,依赖系统自带的WMI服务。
- 若遇到权限问题,尝试以管理员身份运行Python脚本或终端。
- 部分旧版Windows系统可能不支持
FirstInstallDate属性,此时仅能获取InstallDate。
内容的提问来源于stack exchange,提问作者Coder101
相关产品推荐
相关产品推荐

