PowerShell中的“按天分组”

时间:2010-10-19 08:10:48

标签: datetime powershell

好的我有这个脚本,我用CSV读取(从XLS转换)并将ID字段和日期字段保存到数组中。像这样:

New-Object PSObject -prop @{
    TheId = $_."The ID";
    TheDate = [DateTime]::Parse($_."The Date")
}

它就像一个魅力,我得到了一个很好的对象数组,上面有两个属性。现在,我想获得每天的项目数,而不必进行foreach循环等。它有更好的解决方案吗? (请注意,TheDate也包含不同的时间,我想忽略它。)

2 个答案:

答案 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
}