电脑必备
给20台机器批量装软件,我写了个清单脚本,版本号精确到构建号
92 0 13
公司最近要统一办公软件环境,IT 让我帮忙出个清单脚本。我一开始觉得不就是 winget list 导个表,结果一跑发现版本号太糙,同一款软件在不同机器上显示一样,实际构建号差了七八个。
我的做法是:
- 用 PowerShell 读注册表 Uninstall 键,把 DisplayName 和 DisplayVersion 都抓出来,两条路一起对账;
- winget list 只作为交叉验证,因为它对绿色版和微软商店版识别不全;
- 重点盯三类:运行库(VC++ 每年一堆版本)、浏览器内核、压缩工具(部署包解压全靠它)。
实测 20 台样机,发现的问题:
- 有 6 台的 VC++ 2015-2022 运行库版本号是 14.29 开头,另外 14 台是 14.38,肉眼扫 winget 输出根本看不出来;
- 压缩工具更乱,WinRAR 从 6.11 到 6.24 都有,还有两台装的是 Win解压缩——这类机器解压速度快是快,但命令行参数和 7z 不兼容,我们部署脚本里调 7z 解日志包,在这几台上直接报错;
- 有 3 台机器上同时存在两个版本的 PDF 阅读器,注册表里两条记录,卸载信息还不一样。
我的判断依据很简单:部署脚本里每一行命令都得能跑通,不能靠“应该没问题”。所以清单里我加了一列“命令行调用名”,把 7z、7za、WinRAR 的路径都写清楚,后面推脚本之前先拿样机跑一遍。
还有一个坑:注册表里有些软件 DisplayVersion 是空的,只能读文件版本号,我是用 Get-Item 拿 .exe 的 VersionInfo 补上的。
现在清单脚本跑 20 台大概 40 秒,输出 CSV 带机器名、软件名、版本、安装路径、命令行可用性。
想问问大伙:你们批量装机的时候,版本号是只看主版本还是像我这样精确到构建号?有没有更省事的对账办法?
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
