0

我有一个我想格式化显示的数组。我有开始和结束时间的刻度来做一些分组并得到一个最小值/最大值(你不能用日期时间格式的 Measure 来做最小值/最大值)。问题是我想将最终输出显示为日期时间,而不是刻度。我搜索并拥有此代码,但无法使其正常工作。我收到错误消息“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 时,它也会出错。

4

1 回答 1

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

或者,使用[TimeSpan]@BobLobLaw 建议的类型加速器:

$c2 = @{l="Start";e={[TimeSpan]$_.StartTime}}
$c3 = @{l="End";e={[TimeSpan]$_.EndTime}}

$OpenArr | sort Name | Format-Table Name,$c2,$c3,TotalSeconds
于 2013-06-04T18:49:30.877 回答