首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PowerShell获得最大值?

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

Stack Overflow用户
提问于 2020-02-06 06:42:05
回答 3查看 2.4K关注 0票数 1

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

代码语言:javascript
复制
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给出输出吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-02-06 12:14:13

我建议将(比较)版本视为[version]类型,而不是@Dave建议的默认Import-Csv [string]类型或[decimal]类型。

要做到这一点,您可以在计算属性中使用[version[]]数组:

代码语言:javascript
复制
Import-Csv .\MyFile.csv | Group-Object DocName |
    Select Name, @{
        Name = 'Version'
        Expression = {([version[]]$_.Group.Version | Measure-Object -Maximum).Maximum}
    }
票数 0
EN

Stack Overflow用户

发布于 2020-02-06 08:45:43

组表,排序版本并选择最高编号。

代码语言:javascript
复制
$TableGrouped = $Table | Group-Object {$_.DocName}

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

Stack Overflow用户

发布于 2020-02-06 08:39:03

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

代码语言:javascript
复制
$file = Import-Csv -Delimiter ',' | % {$_.Version = [decimal]$_.Version} 
$file | Group-Object DocName | Select Name, @{Name = 'Version'; Expression = {($_.Group.Version | Measure-Object -Maximum).Maximum}}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60089098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档