版本字符串列表 - 查找给定版本区域中的所有版本

时间:2017-05-21 11:34:26

标签: powershell

我有一个版本号为

的字符串列表
1.1.1.0001
1.1.1.0002
1.1.2.0003
1.1.3.0004
1.2.1.0005
1.2.2.0006
2.1.1.0007
2.2.1.0008

我想找出指定版本区域中的版本号。 例如。该领域的所有版本:1.1.3.0004 - 2.1.1.0007。

预期结果:

1.1.3.0004
1.2.1.0005
1.2.2.0006
2.1.1.0007

2 个答案:

答案 0 :(得分:4)

在这种情况下,您可以使用Version类。将每个字符串转换为Version并进行比较:

PS Home:\> $versions = -split '1.1.1.0001
>>> 1.1.1.0002
>>> 1.1.2.0003
>>> 1.1.3.0004
>>> 1.2.1.0005
>>> 1.2.2.0006
>>> 2.1.1.0007
>>> 2.2.1.0008'

PS Home:\> $versions | where { [version]$_ -ge '1.1.3.0004' -and [version]$_ -le '2.1.1.7' }
1.1.3.0004
1.2.1.0005
1.2.2.0006
2.1.1.0007

请注意,如果左操作数为,则比较将自动将右操作数转换为Version

答案 1 :(得分:0)

将字符串转换为'版本'并执行相应的检查

$Min = [version]::new('1.1.3.0004')
$Max = [version]::new('2.1.1.0007')
'1.1.1.0001','1.1.1.0002','1.1.2.0003','1.1.3.0004','1.2.1.0005','1.2.2.0006','2.1.1.0007','2.2.1.0008' | Where-Object {
   [version]::new($_) -le $Max -and
   [version]$_ -ge $Min
}