我正在试图写一个脚本,以获得最新版本的citrix接收机,通过刮刮网站与PowerShell。我已经有了最新的版本,但是我不能正确地排序它们,因为版本次要是将9-1优先于99-10。
这是我的密码
$url = "https://www.citrix.com/downloads/citrix-receiver/"
$html = Invoke-WebRequest -Uri "$url"
$versionLinks = $html.Links | where innerHTML -Match "Receiver \d+(\.\d+)+.* for Windows$" | Sort-Object -Property innerHTML -Descending
$versionArray = @()
foreach ($version in $versionLinks){
[version]$VersionNumber = $version.innerHTML -split " " | Select -First 2 | select -Last 1
$versionArray += $VersionNumber
}
$versionArray = Sort-Object -InputObject $versionArray -Descending -Property minor
$LatestAppVersion = $versionArray[0]
$LatestAppVersion
它的产出是4.9。$versionArray看起来就像
Major Minor Build Revision
----- ----- ----- --------
4 9 -1 -1
4 8 -1 -1
4 7 -1 -1
4 6 -1 -1
4 5 -1 -1
4 3 100 -1
4 12 -1 -1
4 11 -1 -1
4 10 1 -1
我希望它是
Major Minor Build Revision
----- ----- ----- --------
4 12 -1 -1
4 11 -1 -1
4 10 1 -1
4 9 -1 -1
4 8 -1 -1
4 7 -1 -1
4 6 -1 -1
4 5 -1 -1
4 3 100 -1
This question和我的相似。我使用排序版本,所以我不知道为什么我会得到一个不同的结果。在版本不够明确的情况下,我确实尝试使用System.Version。
发布于 2018-10-03 11:50:50
似乎当您按名称将数组传递给Sort-Object
时,-InputObject
实际上没有做任何事情,所以可以使用管道:
$versionArray = $versionArray |Sort-Object -Descending -Property minor
发布于 2018-10-03 11:57:53
你确定你想按小调分类吗?为什么不对整个版本进行排序呢?
而不是:
$versionArray = $versionArray | Sort-Object -Descending -Property minor
考虑一下
$versionArray = $versionArray | Sort-Object -Descending
我把这个作为一个答案和一些思考.注意v3和v5测试用例
<#
HAS
Major Minor Build Revision
----- ----- ----- --------
4 9 -1 -1
4 8 -1 -1
4 7 -1 -1
4 6 -1 -1
4 5 -1 -1
4 3 100 -1
4 12 -1 -1
4 11 -1 -1
4 10 1 -1
WANTS
Major Minor Build Revision
----- ----- ----- --------
4 12 -1 -1
4 11 -1 -1
4 10 1 -1
4 9 -1 -1
4 8 -1 -1
4 7 -1 -1
4 6 -1 -1
4 5 -1 -1
4 3 100 -1
#>
$v = @()
$v += [version]::new(4,9)
$v += [version]::new(4,8)
$v += [version]::new(4,7)
$v += [version]::new(4,6)
$v += [version]::new(4,5)
$v += [version]::new(4,3,100)
$v += [version]::new(4,12)
$v += [version]::new(4,11)
$v += [version]::new(4,10,1)
$v += [version]::new(5,1)
$v += [version]::new(3,99)
"======== MINOR ===================="
$v | Sort -Descending -Property Minor
"======== WHAT YOU MAY REALLY WANT ===================="
$v | Sort -Descending
发布于 2018-10-03 11:49:49
如果你使用,你会得到什么输出?
$versionArray | ForEach-Object {[System.Version]$_} | Sort-Object -Property minor -Descending
它应该产生您想要的输出。
https://stackoverflow.com/questions/52633919
复制