好的我有这个脚本,我用CSV读取(从XLS转换)并将ID字段和日期字段保存到数组中。像这样:
New-Object PSObject -prop @{
TheId = $_."The ID";
TheDate = [DateTime]::Parse($_."The Date")
}
它就像一个魅力,我得到了一个很好的对象数组,上面有两个属性。现在,我想获得每天的项目数,而不必进行foreach
循环等。它有更好的解决方案吗? (请注意,TheDate
也包含不同的时间,我想忽略它。)
答案 0 :(得分:5)
Group-Object
允许将脚本块用作-Property
值。这样您就可以使用Date
属性进行分组:
# demo: group temporary files by modification date (day!):
Get-ChildItem $env:temp | Group-Object {$_.LastWriteTime.Date}
# answer for your example:
$objects | Group-Object {$_.TheDate.Date}
答案 1 :(得分:1)
我用循环解决了这个问题,至少目前是这样:
$startDate = [DateTime]::Parse($startDate)
$endDate = [DateTime]::Parse($endDate)
$items = $items | Where { $_.TheDate -gt $startDate -and $_.TheDate -lt $endDate } | Sort-Object -Property TheDate
$dates = @{}
foreach ($item in $items)
{
$dates.($item.TheDate.ToShortDateString()) += 1
}