【问题标题】:How to get maximum value using PowerShell?如何使用 PowerShell 获得最大价值?
【发布时间】:2020-02-06 22:25:44
【问题描述】:

我有一个包含以下值的 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 提供输出吗?

【问题讨论】:

    标签: powershell powershell-4.0


    【解决方案1】:

    分组表,排序版本并选择最大的数字

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

    【讨论】:

    • 答案也很好,我也对此进行了测试......它正在工作..谢谢 Rob
    【解决方案2】:

    我建议将版本视为[version] 类型,而不是默认的Import-Csv [string] 类型或[decimal] 类型,如@Dave 建议的那样。
    为此,您可以在计算属性中使用[version[]] array

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

    【讨论】:

      【解决方案3】:

      导入 CSV 时,您需要将版本转换为小数,然后您可以使用Group-ObjectMeasure-Object 按文件获取最高版本。像这样的:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-29
        • 2011-07-05
        相关资源
        最近更新 更多