#powershell #sort-object
#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. Является ли источник данных файлом csv?
Ответ №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
Комментарии:
1. единственная проблема будет заключаться в том, что максимальные даты для разных компьютеров будут разными. например, у Computer4 максимальная дата 2021-12-04
2. Вы хотите сказать, что хотите получить максимальную дату для каждой группы (максимальную дату для каждого компьютера)?
3. Обновленный ответ с новым пониманием намерения.
4. Ты молодец, это прекрасно работает !