首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PowerShell - WinGet -将可用的包版本与当前安装的包进行比较

PowerShell - WinGet -将可用的包版本与当前安装的包进行比较
EN

Stack Overflow用户
提问于 2022-08-10 02:00:40
回答 2查看 438关注 0票数 1

目前正在使用WinGet改进Intune中的应用程序部署生命周期。我正在考虑部署一个检测脚本,该脚本每天检查安装的版本,如果有可用的更新,则触发补救。

做一些简单的事情,如:

代码语言:javascript
运行
复制
winget list --name 7-Zip

将以下列方式返回:

代码语言:javascript
运行
复制
Name              Id        Version Available Source
----------------------------------------------------
7-Zip 19.00 (x64) 7zip.7zip 19.00   22.01     winget

在Powershell中,我们是否可以检查和比较可用的“列”和版本“列”,并返回出口0或退出1?

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-10 04:41:40

如果您只需要知道升级是否可用,请在脚本的退出代码中反映:

以下报告在升级可用时退出代码1,而0则报告退出代码,只有在升级可用时才会依赖Available列标题:

代码语言:javascript
运行
复制
exit [int] (winget list --name 7-Zip | Select-String '\bVersion\s+Available\b' -Quiet)

如果您还想报告已安装的版本和最新的可用版本,还需要更多的工作:

代码语言:javascript
运行
复制
$name = '7-Zip'
$lines = winget list --name $name
if ($lines -match '\bVersion\s+Available\b') {
  $verinstalled, $verAvailable = (-split $lines[-1])[-3,-2]
  [pscustomobject] @{
    Name = $name
    InstalledVersion = [version] $verInstalled
    AvailableVersion = [version] $verAvailable
  }
  exit 1
} else {
  Write-Verbose -Verbose "No upgrade for $name available."
  exit 0
}

如果升级可用,上面的输出如下所示;退出代码设置为第一个命令:

代码语言:javascript
运行
复制
Name    InstalledVersion AvailableVersion
----    ---------------- ----------------
7-Zip   9.0.30729.4148   9.0.30729.6161

或者,如果盲目尝试升级是可以接受的

代码语言:javascript
运行
复制
winget upgrade --name 7-Zip --silent
# If $LASTEXITCODE contains -1978335189, an upgrade was NOT available.
票数 1
EN

Stack Overflow用户

发布于 2022-08-10 02:21:18

为什么不使用

winget upgrade

它将返回可用的升级。

喜欢

代码语言:javascript
运行
复制
Name                                                      Id                                    Version          Available     Source
Google Chrome                                             Google.Chrome                         103.0.5060.53    104.0.5112.81 winget
Microsoft Edge                                            Microsoft.Edge                        103.0.1264.49    104.0.1293.47 winget
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73299855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档