Windowsの起動にかかった時間を表示するスクリプト【PowerShell】

コンピュータ

Windowsのイベントログで起動に要した時間を記録しているようですので、PowerShellで参照するスクリプトを作ってみました。

実行するにあたって

PowerShellを「管理者として実行」で起動すること。

スクリプト

# 
# Windowsの起動にかかった時間を表示するスクリプト
# 

$time_created = (Get-WinEvent -Logname Microsoft-Windows-Diagnostics-Performance/Operational | ? {
    $_.Id -eq 100
} | Measure-Object -Property TimeCreated -Maximum).Maximum

$rec = Get-WinEvent -Logname Microsoft-Windows-Diagnostics-Performance/Operational | ? {
    ($_.Id -eq 100) -and ($_.TimeCreated -eq $time_created)
}

$msg = ""

if ($rec.Message -match "ブート所要時間\s+:\s+(\d+)\s") {
    $sec = ([int]($Matches[1])) / 1000
    $msg = "直近のブート時刻は${time_created}で所要時間は${sec}秒でした。"
}
$res = Get-WinEvent -Logname Microsoft-Windows-Diagnostics-Performance/Operational | ? {
    $_.Id -eq 100
} | Select-Object $_ -Last 5  | % {
    if ($_.Message -match "ブート所要時間\s+:\s+(\d+)\s") {
        ([int]($Matches[1]))
    } else {
        $null
    }
} | Measure-Object -Maximum -Minimum -Average

$cnt = $res.Count
$avg = $res.Average / 1000
$max = $res.Maximum / 1000
$min = $res.Minimum / 1000

$msg += "`r`nブート所要時間をサンプル数${cnt}件調査した所"
$msg += "`r`n最速:${min}秒"
$msg += "`r`n最遅:${max}秒"
$msg += "`r`n平均:${avg}秒"
$msg += "`r`nという結果になりました。"

echo $msg

結果

直近のブート時刻は04/21/2019 02:12:42で所要時間は32.889秒でした。
ブート所要時間をサンプル数5件調査した所
最速:32.889秒
最遅:82.422秒
平均:48.276秒
という結果になりました。

コメント