PowerShell - сортировка, начало
Могу я попросить о помощи,
У меня есть дата - "название компании" и "Дата" в значении $, например
|"Comp Name"| "Date" |
|:----------|----------:|
|computer1 | 2021-12-02|
|Computer2 | 2021-10-02|
|computer3 | 2021-08-02|
|computer1 | 2021-11-02|
|computer2 | 2021-12-02|
|computer3 | 2021-12-02|
|computer1 | 2021-10-02|
|computer4 | 2021-09-23|
|computer2 | 2021-09-02|
|computer3 | 2021-12-02|
|computer4 | 2021-12-07|
Теперь я хочу отсортировать его по дате и поставить верхнюю 1, что означает, что он ожидает результата.
|"Comp Name"| "Date" |
|:----------|----------:|
|computer1 |2021-12-02 |
|computer2 |2021-12-02 |
|computer3 |2021-12-02 |
|computer4 |2021-12-07 |
И я использовал:
$list | Sort-Object -Property Date -Descending | Select-Object -First 1
но я получаю только это, computer1 2021-12-02, как правильно ввести
1 ответ
Похоже, вы хотите сгруппировать по имени композиции, а затем выбрать максимальную дату для каждой группы?
$list | Group-Object -Property 'Comp Name' | ForEach-Object { $_.Group | Sort-Object Date -Descending | Select-Object -First 1 }
*Старый (на основе исходного требования): один из способов — получить максимальное значение, затем снова пройтись по списку, фильтруя с помощью командлета Where-Object:
$max = $list | Sort-Object -Property Date -Descending | Select-Object -First 1
$list | Where-Object { $_.Date -eq $max.Date } | Sort-Object -Property 'Comp Name' | Get-Unique -AsString