1
私の目的は、イベント期間中のログファイルを検査し、ログエントリ(開始/終了)に基づいて期間を計算し、それらの期間の平均を計算する最後の24時間、それが特定の値よりも大きいかどうかを判断します(例として2時間使用します)。これまでは、最初の2つの部分が完成しました。ログを正しく調べて、適用可能な各ログの期間を計算しています。私は最後のステップからどこから始めるべきか、すべてのログからの期間の平均化を知りません。以下はこれまでの私のコードです。For Eachループ、平均を計算しようとしています
$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
すごいアプローチ!私は配列を使うのが好きで、どこから始めるのかは分かりません。私はこの方法が大好きです。 1つの質問ですが、私は、私の継続時間が使用しているフォーマットでいくつかの問題にぶつかるかもしれないと思います。今、彼らはHH:MM:SSです。私はそのようにしてみたいと思います。それは平均化の方法でうまくいくのだろうか? – LilithGoddess
@LilithGoddess配列には、使用する文字列形式に依存しないPowerShellの[TimeSpan]オブジェクトが含まれています。 –