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

PowerShell中字符串类型版本号比较失效问题求助

版本号比较问题的解决方案

问题原因

你遇到的问题核心在于$soft.DisplayVersion是字符串类型,直接用-lt比较时,PowerShell会按字典序(字符ASCII码顺序)判断大小:

  • "95.0"的第一个字符是'9',"124.0"的第一个字符是'1'
  • 由于'9'的ASCII码大于'1',字符串比较会返回False,和你预期的数值大小比较结果不符。

正确解法

将版本号转换为专门的[version]类型(.NET的System.Version),它会按版本号的分段(主版本、次版本、修订号等)进行数值比较:

方法1:直接转换后比较

[version]$soft.DisplayVersion -lt [version]"124.0"

执行后会返回预期的True。

方法2:显式解析为Version对象

如果需要重复使用版本号,可先解析为对象再比较:

$currentVer = [System.Version]::Parse($soft.DisplayVersion)
$targetVer = [System.Version]::Parse("124.0")
$currentVer -lt $targetVer

特殊场景处理(语义化版本)

如果版本号包含预发布标签(如124.0-beta),[version]无法解析,可使用PowerShell 7+支持的[semver]类型处理语义化版本:

[semver]$soft.DisplayVersion -lt [semver]"124.0"

内容的提问来源于stack exchange,提问作者S. Me

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:15:59