это похоже на то, что вы хотите.[ ухмылка ]
единственное, что немного странно, это ...
- "поддельное чтение в файле CSV"
, которое простополучить образец данных без необходимости создания файла. - с использованием
Group-Object
для кластеризации элементов по значению свойства .PC
вот код ...
# fake reading in a CSV file
# in real life, use Import-CSV
$InStuff = @'
15.02.2019;pc1;5;
15.02.2019;pc2;0;
16.02.2019;pc3;2;
16.02.2019;pc1;0;
17.02.2019;pc2;2;
18.02.2019;pc1;0;
18.02.2019;pc1;1;
18.02.2019;pc2;1;
'@ | ConvertFrom-Csv -Delimiter ';' -Header Date, PC, Value
$EU_DatePattern = 'dd.MM.yyyy'
$Deadline = [datetime]::Now.Date.AddDays(-30)
$Results = $InStuff |
ForEach-Object {
# my date format is yyyy-MM-dd, so the "-as [datetime]" fails
$_.Date = [datetime]::ParseExact($_.Date, $EU_DatePattern, $Null)
$_
} |
Where-Object {
$_.Date -gt $Deadline
} |
Sort-Object -Property Date, Value |
Group-Object -Property PC |
ForEach-Object {
[PSCustomObject]@{
PC = $_.Name
# the very last item in the ".Group" array will be
# - the newest
# - have the highest ".Value"
Value = $_.Group[-1].Value
}
}
$Results
output ...
PC Value
-- -----
pc2 1
pc1 1
pc3 2
лично, я бы серьезно подумал о сохранении даты, чтобы идти с каждым элементом.