微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Powershell - 验证安装了正确版本的 AppX 的条件

如何解决Powershell - 验证安装了正确版本的 AppX 的条件

我正在尝试创建一个 Powershell 脚本,它将自动安装工作所需的应用程序和打印机。大多数脚本都运行良好,唯一不合适的是我设置了跳过步骤的条件。

该脚本使用 WinGet 来安装大部分应用程序。 WinGet 需要 Microsoft 桌面应用安装程序版本 1.12.11692.0 或更高版本才能让 Winget 工作。如果未安装该版本,则安装它,然后继续执行脚本。如果已安装,则继续执行脚本而不提示用户安装 Microsoft 桌面应用安装程序。

$AppInstallerVersion = Get-AppxPackage Microsoft.DesktopAppInstaller | Select Version

Write-Host "Microsoft Desktop App Installer Version:" $AppInstallerVersion


if ($AppInstallerVersion -eq "1.12.11692.0")
{
 Write-Host "Microsoft Desktop App Installer is equal or higher to the version needed for this script to work,continuing the script."

 .\(pathtoInstallationscript).ps1
}
else
{
Write-Host "Microsoft Desktop App Installer does not meet the minimum version to run this script,a window will Now appear to install the version required for this script the run. Click on Update to install it.
Once installed,press the Enter key in the script to continue."

.\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle
pause
.\(PathtoInstallationscript).ps1
}

到目前为止,我在条件的 -eq 部分之后尝试了以下操作:

  • 创建一个包含版本号字符串的第二个变量。

  • 直接在里面输入版本号(如例子所示 以上。)

  • 输入@{Version=1.12.11692.0} 而不是字符串。

  • 输入不带引号 ("") 的版本号

奇怪的是,它有时会奇怪地工作,但是当第二次测试脚本时,它就会崩溃。

解决方法

您使用的是相等性,但您似乎认为它意味着相等或更大,并且就@Olaf 的观点而言,您可能希望将版本字符串转换为 [Version] 类型。

所以我建议尝试这样的事情:

if ([Version]$AppInstallerVersion -ge [Version]"1.12.11692.0") {
  Write-Host "Microsoft Desktop App Installer is equal or higher to the version needed for this script to work,continuing the script."

 .\(pathtoInstallationscript).ps1
}
,

我已经通过更改变量 $AppInstallerVersion 和 Condition 本身解决了这个问题。经过大量的反复试验,但现在可以正常工作了!提示是因为 [Version] 无法转换。它实际上不是字符串或 System.Version。相反,它是一个 PSObject,因此必须将其更改为 .Version,它只打印出版本号。然后可以将其与字符串进行比较。

$AppInstallerVersion = Get-AppxPackage Microsoft.DesktopAppInstaller

if ($AppInstallerVersion.Version -ge "1.12.11692.0")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。