PowerShell组DateTime以1小时为单位

时间:2015-01-26 11:03:17

标签: powershell

我想用powershell导出IIS统计信息,但我只有1d的分辨率。如何在1小时内对$log进行分组?

foreach ($item in ($log | Group-Object -Property Date ))
{
    Write-Host $("{0};" -f $item.Name) -NoNewline
    Write-Host $("{0};" -f $(($item.Group | measure ).Count)) -NoNewline
    Write-Host $("{0:N2};" -f $(($item.Group | measure -Property Sent -Sum).Sum / 1MB)) -NoNewline
    Write-Host $("{0:N2};" -f $(($item.Group | measure -Property Received -Sum).Sum / 1MB))
}

修改 遗憾的是,如果我添加,*来获取整个对象

,这将非常缓慢
$group = $log | 
    Select-Object @{Name="Hour"; Expression={"{0} {1}" -f $_.Timestamp.Date ,$_.Timestamp.Hour}},* | 
    Group-Object -Property Hour

1 个答案:

答案 0 :(得分:1)

您可以使用Select-Object cmdlet将每个Date的小时部分提取为calculated property并按该属性分组:

$log | Select-Object @{Name="Hour";Expression={$_.Date.Hour}} | Group-Object Hour