一个为 Windows 设计的、功能强大且高度可扩展的 IT 资产扫描、诊断和同步工具。
本项目由 郑宣瀚 在 Gemini 的协助下构思和开发,旨在为IT专业人员提供一个轻量级、无需安装、开箱即用的资产信息收集解决方案。
-
全面的硬件扫描
- 通过插件动态扫描多种硬件信息,包括:
- CPU (处理器)
- 主板与整机信息 (序列号、型号)
- 内存 (RAM)
- 硬盘 (Disk)
- 显卡 (GPU)
- 显示器 (Monitor)
- 网卡 (Network)
- 操作系统 (OS)
- 外设 (键盘、鼠标等)
- 通过插件动态扫描多种硬件信息,包括:
-
一键式系统诊断
- 提供多维度系统健康检查,帮助快速定位问题:
- 性能诊断: CPU/内存实时占用、高资源消耗进程。
- 系统健康: 关键服务状态、系统事件日志错误计数。
- 硬件状态: 硬盘S.M.A.R.T.健康度、电池损耗、CPU温度。
- 网络连接: 自动探测并 Ping 内网网关及外网地址,检查DNS解析。
- 提供多维度系统健康检查,帮助快速定位问题:
-
多样化报告导出
- 将扫描结果一键导出为多种常用格式:
- Excel (
.xlsx) - PDF (
.pdf) - CSV (
.csv) - 直接发送到打印机进行打印
- Excel (
- 将扫描结果一键导出为多种常用格式:
-
与IT资产管理系统 (ITAM) 对接
- 内置与 Snipe-IT 集成的同步插件。
- 智能URL选择: 自动在内外网地址间选择可用链接。
- 自动创建: 同步时若发现 Snipe-IT 中不存在对应的制造商、类别或模型,将自动创建,极大简化首次部署工作。
-
现代化用户界面
- 使用
PySide6和pywinstyles打造的现代化半透明界面。 - 支持亮色/暗黑模式一键切换。
- 丝滑的非线性UI动画效果,包括侧边栏伸缩和按钮悬停。
- 使用
- 核心语言: Python
- 图形界面: PySide6
- 系统信息: WMI, psutil
- API通信: requests
- PDF生成: reportlab
- Excel处理: openpyxl
- Windows原生风格: pywinstyles
- 操作系统:Windows 10 或更高版本
- Python: 3.10 或更高版本
git clone <your_repository_url>
cd it-asset-tool
2. (推荐) 创建并激活虚拟环境
Bash
python -m venv venv
venv\Scripts\activate
3. 安装依赖
项目所需的库已在 requirements.txt 中列出。请创建一个 requirements.txt 文件并填入以下内容,然后执行安装命令。
requirements.txt 文件内容:
pyside6
pywinstyles
wmi
psutil
requests
reportlab
openpyxl
ping3
pywin32
安装命令:
Bash
pip install -r requirements.txt
4. 运行程序
Bash
python main.py
📖 使用说明
配置 (主页):
在“自定义页眉”中输入您希望在报告顶部显示的文字(例如公司名称)。
填写 Snipe-IT 的内/外网 URL 和 API 密钥(如果需要使用同步功能)。
使用开关控件选择本次需要扫描的硬件模块。
扫描:
点击“开始扫描硬件信息”按钮。
在右侧的日志区域观察实时扫描进度。
诊断:
切换到“系统诊断”页面,点击“开始系统诊断”以获取详细的系统健康报告。
导出或同步:
扫描完成后,程序会自动跳转到“报告导出与同步”页面。
点击相应的按钮,选择将报告导出为 PDF/Excel/CSV,或直接打印。
如果已配置 Snipe-IT 信息,可以点击“同步到 Snipe-IT”按钮,将本机资产信息自动同步到服务器。
🧩 插件系统
本工具的核心是其高度灵活的插件化架构。所有功能(扫描、导出、诊断、同步)都由独立的插件实现。
插件类型
扫描插件 (scan_*.py): 负责收集特定类型的硬件或软件信息。
导出插件 (export_*.py): 负责将数据格式化为特定的文件或输出。
诊断插件 (diagnostic_*.py): 负责执行特定的系统健康检查。
同步插件 (sync_*.py): 负责与外部系统(如 Snipe-IT)进行数据交互。
开发新插件
您可以非常轻松地通过创建新文件来扩展工具的功能:
在 plugins 文件夹下创建一个符合命名规范的新 .py 文件。
在文件中创建一个类,并让它继承 plugin_interface.py 中对应的接口(例如 ScanPlugin)。
实现接口所要求的全部方法(例如 scan())。
重启主程序,新插件就会被自动发现并加载到界面上。
📄 许可
本项目采用 GPLv3 许可。
🙏 致谢
感谢所有为本项目所依赖的开源库做出贡献的开发者。