使用Get-AzAksVersion筛选AKS版本时的异常问题求助
问题原因
你遇到的问题是因为直接对版本号字符串进行大小比较,PowerShell会按字典序而非语义化版本规则判断大小。比如字符串'1.23.8'和'1.23.12'比较时,会逐字符对比:前两位'1.23.'相同,第三位字符'8'比'1'大,所以字典序上'1.23.8' > '1.23.12',这就导致了筛选结果不符合预期。
解决方案
将OrchestratorVersion转换为[Version]类型后再进行数值比较,PowerShell的Version类型会正确识别版本号的层级大小。
修正后的第一个脚本
筛选大于1.23.12的非预览版本:
Get-AzAksVersion -Location canadacentral | Where-Object { ([Version]$_.OrchestratorVersion -gt [Version]'1.23.12') -and ($_.IsPreview -ne $true) } | ForEach-Object { $_.OrchestratorVersion }
修正后的第二个脚本
筛选大于1.23.8的非预览版本(会包含1.23.12):
Get-AzAksVersion -Location canadacentral | Where-Object { ([Version]$_.OrchestratorVersion -gt [Version]'1.23.8') -and ($_.IsPreview -ne $true) } | ForEach-Object { $_.OrchestratorVersion }
验证说明
转换为[Version]类型后,版本号会按主版本.次版本.修订版本的层级进行数值比较,比如[Version]'1.23.12'会正确识别为大于[Version]'1.23.8',小于[Version]'1.24.3',筛选结果将符合预期。
内容的提问来源于stack exchange,提问作者User
相关产品推荐
相关产品推荐

