软件吧
登录注册账号
/posts/20-mw2b8rf7-58f6
电脑必备

给20台机器批量装软件,我写了个清单脚本,版本号精确到构建号

码农小张 92 0 13

公司最近要统一办公软件环境,IT 让我帮忙出个清单脚本。我一开始觉得不就是 winget list 导个表,结果一跑发现版本号太糙,同一款软件在不同机器上显示一样,实际构建号差了七八个。

我的做法是:

  1. 用 PowerShell 读注册表 Uninstall 键,把 DisplayName 和 DisplayVersion 都抓出来,两条路一起对账;
  2. winget list 只作为交叉验证,因为它对绿色版和微软商店版识别不全;
  3. 重点盯三类:运行库(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 带机器名、软件名、版本、安装路径、命令行可用性。

想问问大伙:你们批量装机的时候,版本号是只看主版本还是像我这样精确到构建号?有没有更省事的对账办法?

登录后可以为帖子点赞,但本帖内容对所有人开放阅读。

社区回应

0 Replies

还没有回应,抢一个沙发。

登录后可以回应和点赞,但本帖内容对所有人开放阅读。

给20台机器批量装软件,我写了个清单脚本,版本号精确到构建号