如何使用 PowerShell 获得最大价值?

How to get maximum value using PowerShell?

我有一个包含以下值的 csv 文件。使用 import-csv 计算每个文档的最高版本。

DocName      Version
-----------------
DocA.docx     4.0
DocA.docx     3.9
DocA.docx     3.8
DocB.docx     2.0
DocB.docx     1.0
DocC.docx     0.2
DocC.docx     0.1

如何获得每个 DocName 的最大版本?例如,对于 DocA.docx ,最高版本是 4.0 而对于 docB.docx ,最高版本是 2.0.

我需要使用 powershell 提供输出吗?

导入CSV时需要将Version转换为十进制,然后可以使用Group-ObjectMeasure-Object按文件获取最高Version。像这样:

$file = Import-Csv -Delimiter ',' | % {$_.Version = [decimal]$_.Version} 
$file | Group-Object DocName | Select Name, @{Name = 'Version'; Expression = {($_.Group.Version | Measure-Object -Maximum).Maximum}}

分组 table,对版本进行排序,select 最高编号

$TableGrouped = $Table | Group-Object {$_.DocName}

ForEach ($item in $TableGrouped) {
    $item.Group | Sort-Object -Descending -Property Version | Select-Object -First 1 
}

我建议将(比较)版本视为 [version] 类型,而不是默认的 Import-Csv [string] 类型或 [=16= 建议的 [decimal] 类型].
为此,您可以在计算的 属性:

中使用 [version[]] array
Import-Csv .\MyFile.csv | Group-Object DocName |
    Select Name, @{
        Name = 'Version'
        Expression = {([version[]]$_.Group.Version | Measure-Object -Maximum).Maximum}
    }