仅使用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}