仅使用Powershell在Coulmn中添加值

仅使用Powershell在Coulmn中添加值,powershell,Powershell,我在将列中的值相加以获得总计数时遇到问题。我构建了一个查询,它返回特定任务的总时间值。输出如下所示: Total Time in Queue 0Days0 Hours 10Minutes 16Seconds 0Days0 Hours 20Minutes 36Seconds 0Days0 Hours 35Minutes 46Seconds 我想知道排队买这张票的总时间。我无法在单独的行中添加

我在将列中的值相加以获得总计数时遇到问题。我构建了一个查询,它返回特定任务的总时间值。输出如下所示:

                 Total Time in Queue
            0Days0 Hours 10Minutes 16Seconds
            0Days0 Hours 20Minutes 36Seconds
            0Days0 Hours 35Minutes 46Seconds
我想知道排队买这张票的总时间。我无法在单独的行中添加时间,我认为这是因为“队列中的总时间”列中显示的时间模式不均匀

谁能帮我一下吗

注意:我需要仅使用PowerShell来完成此操作


谢谢。

您可以使用
-replace
功能进行这种转换。例如:

PS>“1Days0小时124分16秒”-替换“\s*([0-9]+)\s*Days\s*([0-9]+)\s*Hours\s*([0-9]+)\s*Minutes\s*([0-9]+)\s*Seconds”,”($1*86400)+($2*3600)+($3*60)+$4';调用表达式

上面给出了答案
93856
。我在正则表达式的每一位之间添加了
\s*
,因为这意味着“零个或多个空白字符”来解析您的奇怪间距

如果正在处理一组结果,则可以创建具有以下内容的新列:


…|选择Object@{Expression={$\.'Total Time in Queue'-replace'\s*([0-9]+)\s*Days\s*([0-9]+)\s*Hours\s*([0-9]+)\s*Minutes*($1*86400)+($2*3600)+($3*60)+$4'.\Invoke Expression};Label=“TotalTimeUnseconds”}
这里是一个使用解析作为对象的解决方案

$data = "0Days0 Hours 10Minutes 16Seconds","0Days0 Hours 20Minutes 36Seconds","0Days0 Hours 35Minutes 46Seconds
$times = $data | % {$_ -replace 'Days',':' -replace ' Hours ',':'  -replace 'Minutes ',':' -replace 'seconds',''}
$times | % {[TimeSpan]$sum=0}{$value=[TimeSpan]::ParseExact($_, 'd\:h\:mm\:ss', $null);$sum+=$value}{$sum}