我有一个我希望显示格式的数组。我有一个开始和结束时间以滴答作为一些分组并获得最小/最大(你不能使用日期时间格式的最小值/最大值)。问题是我想将最终输出显示为日期时间,而不是刻度。我搜索并拥有此代码,但无法使其工作。我收到错误“Microsoft.PowerShell.Commands.Internal.Format.FormatStartData”无效或无法按正确顺序“
$OpenArr | Group-Object Name | %{
New-Object psobject -Property @{
Item = $_.Name
Sum = ($_.Group | Measure-Object TotalSeconds -Sum)
StartTime = ($_.Group | Measure-Object StartTime -MIN)
EndTime = ($_.Group | Measure-Object EndTime -MAX)
}
}
#$OpenArr
$c1 = @{Expression={$_.Name}}
$c2 = @{Expression={$_.StartTime.ToString("yyyyMMdd")};Label="Start"}
$OpenArr | Sort-Object Name | Format-Table $c1,$c2,TotalSeconds
我还尝试将StartTime转换为日期时间。在玩它时,这甚至不是问题。当我只做Format-table $ c1时,它也会出错。
答案 0 :(得分:1)
尝试使用TimeSpan
结构:
$c2 = @{l="Start";e={New-Object -Type System.TimeSpan -Arg $_.StartTime}}
$c3 = @{l="End";e={New-Object -Type System.TimeSpan -Arg $_.EndTime}}
$OpenArr | sort Name | Format-Table Name,$c2,$c3,TotalSeconds
或使用@BobLobLaw建议的[TimeSpan]
类型加速器:
$c2 = @{l="Start";e={[TimeSpan]$_.StartTime}}
$c3 = @{l="End";e={[TimeSpan]$_.EndTime}}
$OpenArr | sort Name | Format-Table Name,$c2,$c3,TotalSeconds