如何在PowerShell中自动识别最新版本的指定应用并执行安装
PowerShell 自动匹配最新版本安装包解决方案
原脚本错误原因
- PowerShell 通配符不支持
{0-9}写法,且你定义的$version变量拼接逻辑重复,导致最终路径完全不符合预期 - 没有对匹配到的多版本文件做版本排序,无法保证拿到最新安装包
- 版本号直接用字符串匹配会出现排序错误,例如字符串比较时
1.0.0.10会被判定为小于1.0.0.9
完整可用脚本
# 可修改此处为安装包所在的绝对路径,例:"C:\软件安装包\" $packagePath = "./" # 匹配所有符合命名规则的安装包 $allBootstrappers = Get-ChildItem -Path $packagePath -Filter "x64.Staging.*.ClientBootstrapper.exe" -File # 未找到安装包时抛出错误退出 if ($allBootstrappers.Count -eq 0) { Write-Error "当前目录下未找到符合规则的ClientBootstrapper安装包" exit 1 } # 提取版本号排序,取最新版本 $latestInstaller = $allBootstrappers | ForEach-Object { $nameSeg = $_.Name -split '\.', 5 # 校验提取到的内容是否为合法版本号 if ($nameSeg.Count -ge 4 -and [version]::TryParse($nameSeg[3], [ref]$null)) { [PSCustomObject]@{ File = $_ Ver = [version]$nameSeg[3] } } } | Sort-Object Ver -Descending | Select-Object -First 1 -ExpandProperty File # 执行静默安装 & $latestInstaller.FullName /qn
简化版本(仅适用于目录下永远只有一个符合规则的安装包的场景)
& (Get-Item ./x64.Staging.*.ClientBootstrapper.exe) /qn
内容的提问来源于stack exchange,提问作者kostukp96
相关产品推荐
相关产品推荐

