Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Группировка в массиве (http://forum.oszone.net/showthread.php?t=350600)

solonenko 01-02-2022 16:12 2979121

Группировка в массиве
 
Добрый день
Есть массив данных. В данный момент в массиве 26 элементов, для примера первый элемент

Скрытый текст

mid : a795ac98-b255-425f-8f2e-42ff419b283f
uid : dc531eb6-228c-423d-bf0d-b04e3a6e7332
templateName : appointment-5
log : {@{status=seen; when=2022-01-27T06:07:52.235Z}, @{status=delivered; when=2022-01-27T06:07:50.172Z}, @{status=query; when=2022-01-27T06:07:49.359Z}}
lastStatusUpdate : 2022-01-27T06:07:55.746Z
status : interact
code : 10
channel : viber
type : accepted



Удается сделать группировку например по полю channel
Код:

$mass | group channel -NoElemen

Count Name                   
----- ----                   
  19 viber                   
    5 sms                     
    2 wab

Задача: сгруппировать по дате (из поля lastStatusUpdate), например по дню недели, числу, месяцу. Для этого при группировке по идеи нужно получить требуемый формат
Скрытый текст

$mass | group lastStatusUpdate -NoElement

Count Name
----- ----
1 2022-01-27T06:07:55.746Z
3 2022-01-27T06:11:44.262Z
12 2022-01-27T06:36:26.647Z
3 2022-01-27T13:37:37.487Z
5 2022-01-28T06:09:46.187Z
1 2022-01-28T11:54:37.702Z
1 2022-01-28T11:54:23.503Z


Например get-date ($mass.lastStatusUpdate[0]) -Format ddMMMM - даст 27января
Вопрос: как правильно использовать get-date в $mass | group чтобы получить результат

Count Name
----- ----
19 27января
7 28января

solonenko 01-02-2022 16:34 2979123

upd
Так получилось. Подскажите пож. по синтаксису. { } почему нужно использовать. Правильно ли это в данном случаи? Или есть другой вариант решения задачи
Код:

PS C:\WINDOWS\system32> $mass | group { Get-Date($_.lastStatusUpdate) -Format dd' 'MMMM } -NoElement

Count Name                   
----- ----                   
  19 27 января               
    7 28 января


alpap 01-02-2022 20:33 2979138

да вариантов масса, надо понимать где и как расположен контент
Код:

$file = 'Например путь к файлу, содержащему один элемент'

$hFile = [Ordered]@{}
Switch -Regex -File ($file) {
  Default {
    $Line = $_ -Split ':',2
    $hFile[$Line.TrimEnd()[0]] = $Line.TrimStart()[1]
  }
}
$hFile.lastStatusUpdate|Get-Date -f "dd MMMM"



Время: 05:36.

Время: 05:36.
© OSzone.net 2001-