我一直在尝试编写一个首先运行的脚本
winget upgrade --all --accept-package-agreements --accept-source-agreements --silent
命令,然后记录其结果。这意味着有些软件包由于哈希不匹配而无法安装 - 这对我来说没问题 - 并且有些软件包安装时不会出现问题。我想解析这两种类型的安装:1)成功和2)失败到我设置的文件夹中的.log文件中的2个表(
Format-Table
,如果我理解正确的话)。
我遇到的主要问题是我无法获取winget抛出的返回代码(即,软件包安装还是失败?),并且基于此我无法将输出解析为这两个表,其中包括: AppID、名称(软件)、大小(软件包)、日期(安装或安装失败)
有人可以帮助我吗?
尝试在官方 winget 文档中查找此内容,但找不到任何内容。他们确实提到了
--verbose
、--verbonse-logs
和 --open-logs
,但他们没有做到我在这里想要实现的目标。
如果您使用
winget
CLI,您将需要解析可执行文件放入命令行输出中的文本。但是,如果您使用 Microsoft.WinGet.Client PowerShell 模块,则可以将 Install-WinGetPackage
的结果存储到变量中并访问 Status
和 InstallerErrorCode
属性或直接通过 Pipeline 访问它们
PS C:\Users\Trenly> Install-WinGetPackage Google.Chrome | Select-Object -Property Name,Status,InstallerErrorCode
Name Status InstallerErrorCode
---- ------ ------------------
Google Chrome InstallError 3