[登録されているタグ]

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

PowerShellでブルースクリーンの痕跡を追う|ログの確認手順(PS版)

📝 はじめに

パソコンが突然ブルースクリーン(STOPエラー)になったとき、
「何が原因だったのか見当がつかない」
「再起動してしまって画面の情報を控えられなかった」
と困ることはありませんか?

そんなときは、Windowsが残しているイベントログから
ブルースクリーン(クラッシュ)の痕跡を探せる場合があります。
この記事では Get-WinEvent を使って、
ログの確認手順(PowerShell版)を、初動で使いやすい形でまとめます。

こんな場面で便利

  • ブルースクリーンが起きた時刻を特定したい
  • 予期しない再起動(Kernel-Power)との関連を確認したい
  • 複数回起きているか(頻度)を確認したい
  • 問い合わせ対応で「ログの証拠」を提示したい

✅ このコマンドでできること(要点)

  • ブルースクリーン前後の「異常終了」ログを素早く抽出できる
  • Kernel-Power(ID 41)や予期しないシャットダウン(ID 6008)を追える
  • BugCheck(ブルースクリーンの手がかり)を記録しているイベントを探せる
  • 結果をファイル保存して共有しやすい

✅ Get-WinEventでできること

Get-WinEvent は、Windowsイベントログを取得するコマンドです。
ブルースクリーン自体の「画面」は残りませんが、
その前後に発生する「異常終了」「強制再起動」「BugCheck」などのログが残る場合があります。

まずはSystemログを中心に、
クラッシュに関連しやすいイベントIDを絞り込んで時刻と内容を確認する
のが基本です。

🧩 基本構文

Get-WinEvent -LogName System -MaxEvents 50

直近のSystemログを確認するところから始めます。

▶ 基本的な使い方(まずこれだけ)

🔹 直近の「異常終了」候補をまとめて抽出する

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

よく使う「クラッシュ手がかり」候補をまとめて確認します。
何かしら表示されていれば、調査の入口としては十分です。
エラーが出なければ正常に実行できています。

この抽出で狙っているもの

  • 41:Kernel-Power(突然の電源断/強制再起動の可能性)
  • 6008:予期しないシャットダウン
  • 1001:BugCheck(ブルースクリーン関連の情報が含まれることがあります)

🔹 「ブルースクリーンっぽい時刻」を特定する

Get-WinEvent -FilterHashtable @{
  LogName = "System"
  Id      = 41, 6008
} -MaxEvents 30 |
Select-Object TimeCreated, Id

まずは時刻とIDだけに絞ることで、発生タイミングが追いやすくなります。
ここで候補の時刻が見つかれば、次にメッセージ詳細を確認します。

🛠 よく使われる指定例

🔹 直近7日など「期間」を指定して調査する

Get-WinEvent -FilterHashtable @{
  LogName   = "System"
  Id        = 41, 6008, 1001
  StartTime = (Get-Date).AddDays(-7)
} |
Select-Object TimeCreated, Id, ProviderName, Message

繰り返し発生している疑いがある場合は、期間指定が便利です。

🔹 BugCheck(1001)だけを集中的に見る

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

1001 が出ていれば、
ブルースクリーンに近い情報が残っている可能性があります。
ただし環境によっては記録されない場合もあります。

🔹 表示を見やすく整える(最小限)

Get-WinEvent -FilterHashtable @{
  LogName = "System"
  Id      = 41, 6008, 1001
} -MaxEvents 50 |
Select-Object TimeCreated, Id, ProviderName

まずは一覧性を優先して「時刻・ID・発生元」だけを見るのも有効です。
この結果が出ていれば、抽出自体は問題なくできています。

💼 実務でよく使う使用例(応用)

🔹 「その前後」に何が起きたかを確認する(直近ログの流れを見る)

Get-WinEvent -LogName System -MaxEvents 200 |
Select-Object TimeCreated, Id, LevelDisplayName, ProviderName, Message

異常終了候補の時刻が分かったら、その前後の流れを追うことで、
ドライバー・サービス・ディスク関連の手がかりが見える場合があります。

🔹 調査結果をファイルに保存して共有する

Get-WinEvent -FilterHashtable @{
  LogName   = "System"
  Id        = 41, 6008, 1001
  StartTime = (Get-Date).AddDays(-14)
} |
Select-Object TimeCreated, Id, ProviderName, Message |
Out-File "C:\logs\bsod_trace.log"

ログファイルが出力できていれば、抽出と保存はできています。
出力先フォルダがない場合は作成してから実行してください。

組み合わせ例

  • Select-Object で必要項目だけに絞って見やすくする
  • Out-File で調査結果を保存し、第三者と共有する
  • Where-Object でMessage内のキーワード検索(driver / disk / update など)

🧩 よくある勘違い・つまずきポイント

  • ブルースクリーンの「画面そのもの」はイベントログには残らない
  • 41 は原因確定ではなく「突然落ちた/強制再起動した可能性」のサインに留まる
  • 1001(BugCheck)が必ず出るとは限らない(設定や状況で記録されない場合がある)
  • ログがローテーションされ、古い履歴が消えている場合がある
  • Where-Objectで後から絞ると遅くなることがある(可能ならFilterHashtableで絞る)

⚠ エラー・うまく動かないときの確認ポイント

  • LogNameSystem になっているか
  • イベントIDの指定が数値で正しいか(カンマ区切りなど)
  • 期間指定(StartTime)が狭すぎないか
  • 保存先フォルダ(例:C:\logs)が存在するか
  • 管理者として実行が必要な環境ではないか

🧠 注意点

ブルースクリーンの原因は、ドライバー、ストレージ、メモリ、電源、更新、周辺機器など多岐にわたります。
イベントログは「発生時刻」と「異常終了の手がかり」を掴むのに強い一方で、
ログだけで原因を断定できない場合もあります。

まずは「いつ」「どのIDが出たか」を押さえ、
その前後のSystem/Applicationログや、必要ならダンプ解析などと組み合わせるのが現実的です。

📌 まとめ

  • ブルースクリーンの痕跡はSystemログから追える場合がある
  • まずは 41 / 6008 / 1001 をFilterHashtableで絞り込む
  • 時刻が分かったら、その前後のログを広めに見て手がかりを探す
  • 次はイベントIDの追加(例:ドライバー/ディスク関連)や、Application側の確認もすると理解が深まる
  • やりたいことが曖昧な場合は検索フォームを使うと探しやすい

🔎 PowerShellコマンドを探す

やりたいことから、関連するPowerShellコマンドや記事を探せます。

  • ファイルを削除したい
  • 一覧を表示したい
  • 文字列を検索したい
  • 条件で絞り込みたい
  • エラーや実行できない原因を調べたい
  • ブルースクリーンが起きた時刻を調べたい(41 / 6008
  • BugCheckの記録を確認したい(1001
  • 直近のエラーだけを抽出したい(-MaxEvents と併用)
Generic filters
すべてを開く | すべてを閉じる

ページ上部へ戻る