You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中通过WinGet对比已安装与可用软件版本并返回退出码

用PowerShell对比WinGet已安装版本与可用版本并返回退出码

完全可以实现,下面是适配Intune检测场景的PowerShell脚本,专门处理7-Zip的版本对比需求:

# 获取7-Zip的WinGet清单数据(JSON格式,便于结构化解析)
$wingetOutput = winget list --name "7-Zip" --json | ConvertFrom-Json

# 过滤出目标应用条目
$app = $wingetOutput | Where-Object { $_.Name -match "7-Zip" }

# 处理应用未安装的情况
if (-not $app) {
    Write-Host "7-Zip未安装"
    exit 1 # 未安装也触发修复(可根据需求调整为exit 0)
}

# 提取已安装版本与可用版本
$installedVersion = [version]$app.Version
$availableVersion = [version]$app.Available

# 对比版本号
if ($availableVersion -gt $installedVersion) {
    Write-Host "发现可用更新:当前版本$installedVersion,可用版本$availableVersion"
    exit 1 # 存在更新,触发Intune修复
} else {
    Write-Host "当前版本已是最新:$installedVersion"
    exit 0 # 无更新,无需修复
}

关键细节说明:

  • 选用--json参数获取WinGet输出:相比纯文本格式,JSON结构更稳定,避免因WinGet版本更新导致的文本解析失效问题,更适合生产环境的Intune脚本
  • 版本号类型转换:通过[version]将版本字符串转换为PowerShell版本对象,实现安全的大小对比(自动处理多段版本号,比如19.00 vs 22.01)
  • 退出码逻辑:
    • exit 1:触发Intune修复流程(对应存在可用更新或应用未安装的情况)
    • exit 0:无需修复(当前版本为最新)
  • 可扩展性:将"7-Zip"替换为其他应用名称,即可适配其他软件的版本检测需求

内容的提问来源于stack exchange,提问作者Batteredburrito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 22:15:38