1
我的目標是編寫一個腳本,用於檢查事件持續時間的日誌文件,根據日誌條目計算持續時間(開始/結束),然後計算這些持續時間的平均值最近24小時,並確定它是否大於某個值(例如,讓我們使用2小時)。到目前爲止,我已經完成了前兩個部分,正在適當檢查日誌並計算每個適用日誌的持續時間。我只是不知道從最後一步開始,所有日誌的持續時間平均。以下是我的代碼到目前爲止。ForEach循環,試圖計算平均值
$imagesuccess = Get-ChildItem '\\server\osd_logs\success' -Directory |
Where-Object {
($_.Name -like "P0*") -or (($_.Name -like "MININT*") -and
(Test-Path "$($_.FullName)\SCCM_C\Logs\SMSTSLog\Get-PSPName.log")) -and
($_.LastWriteTime -gt (Get-Date).AddHours(-24))
}
$sccmlogpaths = "\\s0319p60\osd_logs\success\$($imagesuccess)\SCCM_C\Logs\SMSTSLog\smsts.log"
foreach ($sccmlogpath in $sccmlogpaths) {
$imagestartline = Select-String -Pattern "<![LOG[New time:" -Path $sccmlogpath -SimpleMatch
$imagestarttime = $imagestartline.ToString().Substring(75, 8)
$imagefinishline = Select-String -Pattern "<![LOG[ Directory: M:\$($imagesuccess)" -Path $sccmlogpath -SimpleMatch
$imagefinishtime = $imagefinishline.ToString().Substring(71, 8)
$imageduration = New-TimeSpan $imagestarttime $imagefinishtime
$imagedurationstring = $imageduration.ToString()
}
@RyanBemrose是的!總的錯誤,感謝你接受它。 (我已經編輯來糾正它)。 – TessellatingHeckler
令人敬畏的方法!我喜歡使用數組,我只是在從哪裏開始畫空白。我喜歡這種方法。有一個問題,我想我可能會遇到一些問題,其格式是我的工期。現在他們是HH:MM:SS,我想盡量保持這種狀態。平均法可以很好地發揮作用嗎? – LilithGoddess
@LilithGoddess數組包含PowerShell'[TimeSpan]'對象,它們獨立於您使用的字符串格式。 –