对PowerShell版本进行排序

max*_*dbe 13 sorting powershell

在PowerShell中,如果我有一个包含版本的字符串列表,"3.0.1.1","3.2.1.1"等,我怎样才能按照System.Version在C#中对它进行排序的方式对其进行排序?

Jam*_*ran 25

PS C:\> $ver="3.0.1.1","3.2.1.1"
PS C:\> $ver|%{[System.Version]$_}|sort

Major  Minor  Build  Revision
-----  -----  -----  --------
3      0      1      1
3      2      1      1
Run Code Online (Sandbox Code Playgroud)


Jar*_*Par 9

只需将其转换为版本并按此方式排序:

$list = "3.0.1.1","3.2.1.1" 
$sorted = $list | %{ new-object System.Version ($_) } | sort
Run Code Online (Sandbox Code Playgroud)


Nic*_*lay 7

版本字符串可以转换为 Version 对象,并且 sort-object可以传递脚本块并对结果进行排序。

PS C:\Users\me> "3.11.0.1", "3.0.1.1", "3.2.1.1" | sort
3.0.1.1
3.11.0.1
3.2.1.1

PS C:\Users\me> "3.11.0.1", "3.0.1.1", "3.2.1.1" | sort {[version] $_}
3.0.1.1
3.2.1.1
3.11.0.1
Run Code Online (Sandbox Code Playgroud)

(添加了一个额外的版本字符串以使示例真正有意义。)