ForEach循环,试图计算平均值

时间:2016-09-13 16:49:21

标签: powershell

我的目标是编写一个脚本,在事件持续时间内检查日志文件,根据日志条目(开始/结束)计算持续时间,然后计算过去24小时内这些持续时间的平均值,并确定是否它大于某个值(例如,让我们使用2小时)。到目前为止,我已完成前两个部分,它正在检查日志并计算每个适用日志的持续时间。我不知道从最后一步开始的位置,来自所有日志的持续时间的平均值。以下是我的代码。

 :plays guitar!
Lennon: plays bass!
 :plays guitar!
Mccartney: plays bass!

1 个答案:

答案 0 :(得分:1)

大概你这样做:

$durations = foreach ($sccmlogpath in $sccmlogpaths) {
    # [snip]

    $imageduration = New-TimeSpan $imagestarttime $imagefinishtime

    $imageduration  # the 'output' of the foreach () {}
}


# $durations is now an array of timespans

$measurements = $durations | Measure-Object -Average -Property TotalHours
$averageHours = $measurements.Average

if (2.5 -lt $averageHours) {
    # code here
}

这是sum(n)/ count(n)平均值。

NB。如果您在过去24小时内查询,如果任何持续时间跨越午夜,New-TimeSpan将无法正常工作;它会看到23:01 - > 00:01至-23小时。