【问题标题】:Powershell export to csv sum of timespanPowershell 导出到 csv 时间跨度总和
【发布时间】:2020-06-18 11:47:33
【问题描述】:

我需要将总时间跨度值的结果导出到 csv 文件。

 $outItems = New-Object System.Collections.Generic.List[System.Object]

 [TimeSpan[]]$outItems = foreach ($eachtimer in $DurationColl){

 if ($eachtimer -match 'H|M|S'){
   Convert-TimeString -Time  $eachtimer -Format 'm\Ms\.fff\S' }
 else {
   Convert-TimeString -Time $eachtimer -Format "h\:mm\:ss"} 
}

 $seconds = ($outItems | Measure-Object -Property TotalMilliseconds -Sum).Sum
 $ts =  [timespan]::FromMilliseconds($seconds) 
 $ert =  ("{0:hh\:mm\:ss\,fff}" -f $ts) 
 $ert | Export-Csv  C:\Users\User\Documents\output.csv -Append -NoTypeInformation -Encoding ASCII

$ert 值为 04:05:38,631,在 csv 上显示属性长度。 在简历中,我的 Export-Csv 不起作用。

感谢您的帮助

【问题讨论】:

  • Export-CSV 将输入对象的属性转换为列,并将它们的值转换为行。当您只提供一个字符串时,字符串的唯一属性是Length。你可以做[pscustomobject]@{Time = $ert} | export-csv ...

标签: powershell


【解决方案1】:

Export-Csv 将输入对象转换为带分隔符的文本文件。这些对象的属性成为列/标题,值成为在列下对齐的行。当您的输入对象是类型字符串时,字符串的唯一属性是Length。因此,您看到的结果是预期的。要实现预期的行为,您应该使用包含所需属性的对象类型或创建您自己的自定义对象。

使用自定义对象,您可以执行以下操作,这将创建一个具有属性Timespan 的对象。

[pscustomobject]@{'Timespan' = $ert} |
    Export-Csv C:\Users\User\Documents\output.csv -Append -NoTypeInformation -Encoding ASCII

【讨论】:

  • 再次感谢 AdminOfThings 的解释和帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-27
  • 2015-01-17
  • 2016-10-23
  • 1970-01-01
  • 2012-12-16
相关资源
最近更新 更多