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
Другие вопросы по тегам