我有一个版本号为
的字符串列表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
答案 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
}