[登録されているタグ]

[記事公開日]2026/01/26

PowerShellでブルースクリーン履歴を確認する方法(STOPコード/再起動痕跡)

ブルースクリーン(BSOD)は「Event ID 1001(BugCheck)」と「Kernel-Power 41」周辺に痕跡が残る。PowerShellで履歴を一覧化し、発生時刻・STOPコード・関連兆候を追う実務手順。

PowerShell
ブルースクリーン
BugCheck
切り分け

「突然再起動した」「電源が落ちたように見えた」「一瞬青い画面が出た気がする」――
実はこれ、ブルースクリーン(BSOD)→自動再起動の可能性があります。
ブルースクリーンは必ず画面にSTOPコードが表示される…と思われがちですが、
自動再起動が速い設定だと、ユーザーが見逃すことが多いです。
WindowsはBSODの痕跡をイベントログやダンプファイルとして残すため、
PowerShellで履歴を一覧化すれば「いつ、どんな停止が起きたか」を追えます。

※本記事は「履歴の確認」と「原因の方向性を掴む」ための手順です。
STOPコードの断定原因(特定ドライバやハード故障)まで詰めるには、ダンプ解析が必要になることがあります。

1. まず結論:BSOD履歴は “BugCheck 1001” を軸に見る

  • Event ID 1001(BugCheck):ブルースクリーンの痕跡が残る代表ログ
  • Event ID 41(Kernel-Power):正常終了せず再起動した(結果ログ)
  • Event ID 6008:予期しないシャットダウン(結果ログ)

まずは BugCheck(1001)で「BSODの事実」を確認し、
その前後に 41/6008 や WHEA、ドライバ/ストレージ系のエラーがないかを見ます。

2. 最短:BugCheck(1001)を一覧表示する

2-1. 直近50件のBSOD痕跡(Systemログ)

Get-WinEvent -FilterHashtable @{
  LogName = "System"
  Id      = 1001
} -MaxEvents 50 |
Select-Object TimeCreated, ProviderName, Id, LevelDisplayName, Message |
Sort-Object TimeCreated -Descending
      

Message 内に STOPコード(BugCheck code)やダンプパス(例:C:\Windows\MEMORY.DMP)が含まれることがあります。

3. STOPコードを “抜き出して” 見やすくする(実務向け)

Message は長くて読みづらいので、STOPコードに関係する部分を抽出して一覧化します。
ただし、Messageの文面はOS言語やバージョンで差があるため、まずは“安全な範囲”で整形します。

3-1. Messageを1行化して貼りやすくする

Get-WinEvent -FilterHashtable @{
  LogName = "System"
  Id      = 1001
} -MaxEvents 50 |
ForEach-Object {
  [PSCustomObject]@{
    TimeCreated = $_.TimeCreated
    Provider    = $_.ProviderName
    Id          = $_.Id
    Message     = ($_.Message -replace "\r?\n"," ")
  }
} |
Sort-Object TimeCreated -Descending |
Format-Table -AutoSize
      

3-2. “BugCheck code”っぽい数値を拾う(拾える環境のみ)

BugCheckの文面に「BugcheckCode」などが含まれる場合に限り、数値抽出できます(環境差あり)。

Get-WinEvent -FilterHashtable @{
  LogName = "System"
  Id      = 1001
} -MaxEvents 80 |
ForEach-Object {
  $msg = ($_.Message -replace "\r?\n"," ")
  $m = [regex]::Match($msg, "(?i)(bugcheck|bug check)\s*(code|値)?\s*[:=]?\s*(0x[0-9a-fA-F]+|\d+)")
  [PSCustomObject]@{
    TimeCreated = $_.TimeCreated
    CodeHint    = if($m.Success){ $m.Groups[3].Value } else { "" }
    Message     = $msg
  }
} |
Sort-Object TimeCreated -Descending |
Select-Object -First 50 |
Format-Table -AutoSize
        

4. 「落ちたように見えた」ケースの確認:Kernel-Power 41 / 6008 も並べて見る

BSODが起きると、結果として 41 / 6008 が一緒に出ることが多いです。
「1001が無い=BSODじゃない」とは限りませんが、並べて見ると状況が分かりやすくなります。

4-1. 41 / 6008 / 1001 をまとめて表示

Get-WinEvent -FilterHashtable @{
  LogName = "System"
  Id      = 41, 6008, 1001
} -MaxEvents 120 |
Select-Object TimeCreated, Id, ProviderName, LevelDisplayName, Message |
Sort-Object TimeCreated -Descending
      

5. ハード系の可能性を上げる:WHEA(ハードウェアエラー)確認

BSODの原因がCPU/メモリ/PCIe/ストレージなどハード寄りの場合、WHEAが出ることがあります。
BSODの前後にWHEAが多発していないか確認します。

5-1. WHEA-Logger を一覧表示

Get-WinEvent -FilterHashtable @{
  LogName      = "System"
  ProviderName = "Microsoft-Windows-WHEA-Logger"
} -MaxEvents 60 |
Select-Object TimeCreated, Id, LevelDisplayName, Message |
Sort-Object TimeCreated -Descending
      

6. BSOD前後に多い“兆候”を拾う(ストレージ/ドライバ)

BSODの根っこがストレージやドライバの場合、直前にエラーが出ていることがあります。
代表的な系統をまとめて拾います。

6-1. ストレージ系(disk/Ntfs/stor*)のエラー

$days = 14
Get-WinEvent -FilterHashtable @{
  LogName   = "System"
  StartTime = (Get-Date).AddDays(-$days)
} |
Where-Object {
  $_.ProviderName -in @("disk","Ntfs","volmgr","partmgr","storahci","stornvme","nvme","storport","iaStorA","iaStorAC")
  -and $_.LevelDisplayName -in @("Error","Warning","Critical")
} |
Select-Object TimeCreated, ProviderName, Id, LevelDisplayName, Message |
Sort-Object TimeCreated -Descending |
Select-Object -First 200
      

6-2. ドライバ初期化/デバイスエラー(Kernel-PnP / DriverFrameworks)

$days = 14
Get-WinEvent -FilterHashtable @{
  LogName   = "System"
  StartTime = (Get-Date).AddDays(-$days)
} |
Where-Object {
  $_.ProviderName -in @("Microsoft-Windows-Kernel-PnP","Microsoft-Windows-DriverFrameworks-UserMode")
  -and $_.LevelDisplayName -in @("Error","Warning")
} |
Select-Object TimeCreated, ProviderName, Id, LevelDisplayName, Message |
Sort-Object TimeCreated -Descending |
Select-Object -First 200
      

7. ダンプファイルがあるか確認する(解析の入口)

STOPコードの原因特定を進めるなら、ダンプ(MEMORY.DMP や Minidump)が必要になることがあります。
まずは「ファイルが存在するか」を確認します。

7-1. Minidump / MEMORY.DMP の有無を確認

# ミニダンプ(複数あることが多い)
Get-ChildItem "C:\Windows\Minidump" -ErrorAction SilentlyContinue |
Select-Object Name, Length, LastWriteTime |
Sort-Object LastWriteTime -Descending |
Select-Object -First 20

# メモリダンプ(大きい)
Get-Item "C:\Windows\MEMORY.DMP" -ErrorAction SilentlyContinue |
Select-Object FullName, Length, LastWriteTime
      

ダンプが無い場合は、設定(自動再起動/ダンプ種類/保存先)や、ストレージ容量不足などで残らないこともあります。

8. 実務のまとめ:調査の最短ルート(迷ったらこの順)

  1. BugCheck(1001)を一覧化して、BSODが起きた日時を確定
  2. 同時刻付近の 41 / 6008 を確認(「落ちたように見えた」も含める)
  3. WHEA(ハード)と、ストレージ/ドライバのエラー兆候を前後で確認
  4. Minidump / MEMORY.DMP の有無を確認(必要なら解析へ)

BSODが頻発している状態での“長時間運用”は、データ破損や起動不能に繋がることがあります。
ストレージ系のエラー兆候が出ている場合は、診断より先にバックアップ/救出を優先してください。

➡️ 関連記事(タイトル順)

すべてを開く | すべてを閉じる

ページ上部へ戻る