表达式上的Powershell格式表错误

时间:2013-06-04 15:20:45

标签: powershell powershell-v2.0

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

1 个答案:

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