将表示软件版本的两个数字与几个点进行比较



我想比较创建一个函数来比较/验证版本号是否小于另一个版本号。数字是:

$version1 = 23.0.46.0
$version2 = 24.1.154.0

当我使用下面这样的简单if条件时,它不起作用,因为它会给我错误的

IF(23.0.46.0 -lt 24.1.154.0){
Write-Host "True"
}
Else
{
Write-Host "False"
}

我有一个想法,把版本号除以点分成一个数组。然后做一个循环来比较每个版本的部分,直到那个版本比另一个版本小。在这种情况下,它将直接在第一次迭代中,因为23<24.然而,我刚加入Powersehll

感谢您的帮助

您可以为此使用version类。这个简单的function将在两个输入之间返回更高版本:

function Compare-Version {
param(
[version]$a,
[version]$b
)
($a, $b)[$a -lt $b]
}
Compare-Version '25.0.46.0' '25.1.154.0'
Major  Minor  Build  Revision
-----  -----  -----  --------
25     1      154    0

请注意,要使输入有效,它必须符合版本语法。

来自官方文件的备注

版本号由两到四个组件组成:主要、次要、构建和修订。需要主要和次要组件;生成和修订组件是可选的,但如果定义了修订组件,则生成组件是必需的。所有定义的组件都必须是大于或等于0的整数。版本号的格式如下(可选组件显示在方括号中([和](:

major.minor[.build[.revision]]

相关内容

  • 没有找到相关文章

最新更新