Powershell экспорт в csv сумма временного интервала - PullRequest
0 голосов
/ 18 июня 2020

Мне нужно экспортировать в файл 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 не работает.

Спасибо за любую помощь

1 Ответ

2 голосов
/ 18 июня 2020

Export-Csv преобразует входные объекты в текстовый файл с разделителями. Свойства этих объектов становятся столбцами / заголовками, а значения становятся строками, которые выравниваются по столбцам. Когда ваш входной объект является строкой типа, единственным свойством строки является Length. Поэтому ожидаемый результат. Для достижения ожидаемого поведения вы должны использовать типы объектов, которые содержат желаемые свойства, или создать свои собственные настраиваемые объекты.

Используя настраиваемый объект, вы можете сделать следующее, что создаст объект со свойством Timespan .

[pscustomobject]@{'Timespan' = $ert} |
    Export-Csv C:\Users\User\Documents\output.csv -Append -NoTypeInformation -Encoding ASCII
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...