如何使用 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-Object
和Measure-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}
}
我有一个包含以下值的 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-Object
和Measure-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}
}