PowerShell 以 1 小时的步骤对 DateTime 进行分组
PowerShell group DateTime in 1h steps
我想用 powershell 导出 IIS 统计信息,但我的分辨率只有 1d。如何将 $log
分成 1 小时的部分?
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
您可以使用 Select-Object
cmdlet 将每个 Date
的小时部分提取为 calculated property 并按 属性 分组:
$log | Select-Object @{Name="Hour";Expression={$_.Date.Hour}} | Group-Object Hour
我想用 powershell 导出 IIS 统计信息,但我的分辨率只有 1d。如何将 $log
分成 1 小时的部分?
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
您可以使用 Select-Object
cmdlet 将每个 Date
的小时部分提取为 calculated property 并按 属性 分组:
$log | Select-Object @{Name="Hour";Expression={$_.Date.Hour}} | Group-Object Hour