如何通过Powershell从Microsoft Office的Build号获取对应版本号
Office 365 版本Build号自动匹配实现方案
核心逻辑说明
不用手动维护Build与版本的对应关系,直接从微软公开的更新元数据接口拉取结构化数据,自动生成最新的映射表,每次执行自动同步微软发布的新版本信息,不需要人工更新规则。
具体实现步骤
1. 管控端拉取最新版本映射表
仅需在管理端执行一次拉取逻辑,不需要每台终端访问公网,示例代码如下:
# 拉取Office 365 正式通道最新版本映射元数据 $updateMeta = Invoke-RestMethod -Method Get -Uri "https://learn.microsoft.com/api/search/rss?filter=products%2Foffice%2F365&locale=zh-cn" # 解析生成Build号-版本号哈希映射表 $buildVersionMap = @{} foreach ($item in $updateMeta.items) { if ($item.title -match '版本\s*(\d+)\s*.*Build\s*(\d+\.\d+)') { $buildVersionMap[$matches[2]] = $matches[1] } } # 可选:保存映射表到本地供后续批量查询使用 $buildVersionMap | Export-Clixml -Path ".\OfficeBuildMap.xml"
2. 远程终端版本校验逻辑
通过远程PowerShell在终端执行版本提取,返回Build号后和管控端的映射表匹配即可:
# 远程终端执行的版本提取命令 $remoteOfficeVersion = Invoke-Command -ComputerName $终端主机名 -ScriptBlock { $regPath = 'HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration' if (Test-Path $regPath) { $fullVer = Get-ItemProperty -Path $regPath | Select-Object -ExpandProperty VersionToReport -ErrorAction SilentlyContinue return $fullVer -replace '^16\.0\.','' } return $null } # 匹配版本 if ($remoteOfficeVersion -and $buildVersionMap.ContainsKey($remoteOfficeVersion)) { $output = "终端$($终端主机名) Office版本正常:$($buildVersionMap[$remoteOfficeVersion]),Build号$remoteOfficeVersion" } else { $output = "终端$($终端主机名) Office版本非最新,请检查更新,返回Build号:$remoteOfficeVersion" } # 输出到报告 $output | Out-File ".\Office版本检查报告.txt" -Append
批量部署优化建议
- 映射表每周同步一次即可,Office正式通道每月仅更新1-2次,不需要频繁拉取
- 对于离线环境,可以手动导出映射表后导入到离线管控端使用
- 可以添加版本号对比逻辑,自动标记低于指定版本的终端,实现批量告警
内容的提问来源于stack exchange,提问作者IT M
相关产品推荐
相关产品推荐

