Skip to content

Instantly share code, notes, and snippets.

@h1romas4
Last active December 9, 2017 05:51
Show Gist options
  • Save h1romas4/d56e322eba4f7dc80748364775ca53a2 to your computer and use it in GitHub Desktop.
Save h1romas4/d56e322eba4f7dc80748364775ca53a2 to your computer and use it in GitHub Desktop.
Windows のイベントログを元に PC の日ごとの起動終了ログを出力する(日中の再起動は無視)
# 実行日当月のイベントログを対象にする
Get-EventLog -LogName System -After (Get-Date -Format "yyyy/MM/01") | Where-Object {
# OSの起動終了時刻をイベントログサービスの開始(6005)、停止(6006)で判定
$_.EventID -eq '6005' -or $_.EventID -eq '6006'
} | ForEach-Object {
# イベントを日付でサマリーするためのカスタムオブジェクト生成
[PSCustomObject]@{
EventID = $_.EventID
EventName = if($_.EventID -eq '6005') { "up" } else { "down" }
DateGenerated = ($_.TimeGenerated).ToString("yyyy/MM/dd")
TimeGenerated = $_.TimeGenerated
}
} | Group-Object EventId, DateGenerated | ForEach-Object {
# 日付でグルーピングして一番早い起動と、一番遅い終了を取得(日中の再起動を無視する)
if($_.Group.EventID[0] -eq '6005') {
$_.Group | Sort-Object TimeGenerated | Select-Object -First 1
} else {
$_.Group | Sort-Object -Descending TimeGenerated | Select-Object -First 1
}
} | Sort-Object DateGenerated, EventId | Select-Object EventName, TimeGenerated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment