もくじ
📝 はじめに
ブルースクリーンやフリーズ、突然の再起動が起きたとき、
「ドライバーが原因かもしれない」と言われても、
どこから確認すればいいか迷うことはありませんか?
ドライバー起因の不具合は、必ずしも「ドライバー名がそのまま出る」とは限りませんが、
イベントログ(System / Application)から手がかりを拾える場合があります。
この記事では Get-WinEvent を使い、
ドライバー起因を疑うときのログ確認の観点を整理します。
- フリーズや再起動の直前に何が起きていたか知りたい
- 特定のデバイス(Wi-Fi / GPU / USBなど)が怪しい気がする
- Windows Update後から不具合が出始めた
- 修理・保守対応で「根拠」を示しながら切り分けたい
✅ このコマンドでできること(要点)
- Systemログから「ドライバー/デバイス関連の兆候」を絞り込みできる
- 突然の再起動(ID 41)前後の流れを追って原因の手がかりを探せる
- ディスク/ネットワーク/USBなど、疑いポイント別に確認観点を整理できる
- 結果をファイル出力して共有・記録できる
✅ Get-WinEventでできること
Get-WinEvent は、Windowsのイベントログを取得するコマンドです。
ドライバー起因を疑うときは、
「異常終了の直前に何が起きていたか」を見ていくのが基本になります。
そのため、まずはクラッシュ・強制再起動系のイベントで時刻の目安を掴み、
次にその前後で「デバイス・ドライバーっぽい警告/エラー」を探します。
🧩 基本構文
Get-WinEvent -LogName System -MaxEvents 100
Systemログの直近を見て、異常の兆候がないか確認します。
▶ 基本的な使い方(まずこれだけ)
🔹 まず「異常終了の時刻」を掴む(入口)
Get-WinEvent -FilterHashtable @{
LogName = "System"
Id = 41, 6008, 1001
} -MaxEvents 30 |
Select-Object TimeCreated, Id, ProviderName, Message
ここで「いつ落ちたか(落ちたっぽい時刻)」の目安を作ります。
何かしら表示されていれば、調査の入口としては十分です。
エラーが出なければ正常に実行できています。
🔹 その前後のSystemログを広めに見る(流れを掴む)
Get-WinEvent -LogName System -MaxEvents 300 |
Select-Object TimeCreated, Id, LevelDisplayName, ProviderName, Message
直前に「警告」「エラー」が連続していないか、
同じ発生元(ProviderName)が繰り返し出ていないかを確認します。
一覧が表示されていれば、確認に進めます。
🛠 よく使われる指定例
🔹 直近の「エラー/警告」だけに絞る(兆候探し)
Get-WinEvent -LogName System -MaxEvents 300 |
Where-Object { $_.LevelDisplayName -in @("Error","Warning") } |
Select-Object TimeCreated, LevelDisplayName, ProviderName, Id, Message
直近の怪しいログだけを抽出します。
エラー/警告が表示されていれば、兆候探しはできています。
🔹 期間を指定して「最近から怪しい」を確認する
Get-WinEvent -FilterHashtable @{
LogName = "System"
StartTime = (Get-Date).AddDays(-3)
} |
Where-Object { $_.LevelDisplayName -in @("Error","Warning") } |
Select-Object TimeCreated, ProviderName, Id, Message
「ここ数日で発生し始めた」などの状況で、切り分けに使いやすいです。
🔹 発生元(ProviderName)を集計して傾向を見る
Get-WinEvent -LogName System -MaxEvents 1000 |
Where-Object { $_.LevelDisplayName -in @("Error","Warning") } |
Group-Object ProviderName |
Sort-Object Count -Descending |
Select-Object -First 10 Count, Name
直近で頻出している発生元(プロバイダ)を上位表示します。
上位に同じものが出続けている場合、手がかりになることがあります。
- 異常終了(41/6008/1001)直前に、同じProviderの警告/エラーが連続していないか
- メッセージにデバイス名・バス名(USB / PCI / NVMe / WLAN など)が含まれないか
- 同じイベントIDが短時間に繰り返していないか
- Windows Updateやドライバー更新のタイミングと近くないか
💼 実務でよく使う使用例(応用)
🔹 「怪しい時刻の前後30分」を目視しやすく抽出する
$t = Get-Date "2026-01-01 12:00:00"
Get-WinEvent -FilterHashtable @{
LogName = "System"
StartTime = $t.AddMinutes(-30)
EndTime = $t.AddMinutes(30)
} |
Select-Object TimeCreated, LevelDisplayName, ProviderName, Id, Message
ブルースクリーンやフリーズが起きた時刻が分かる場合は、
前後のログを切り取ると原因の手がかりが見つかりやすくなります。
ここで一覧が出ていれば、時刻指定は機能しています。
🔹 「デバイス系キーワード」でメッセージ検索する(軽め)
Get-WinEvent -LogName System -MaxEvents 2000 |
Where-Object {
$_.LevelDisplayName -in @("Error","Warning") -and
$_.Message -match "driver|device|wlan|wifi|nvme|stor|disk|usb|pci|display|gpu"
} |
Select-Object TimeCreated, ProviderName, Id, Message
ざっくり絞る方法です。環境によってはヒットしない場合もあります。
🔹 調査結果をファイルに保存して共有する
Get-WinEvent -LogName System -MaxEvents 1000 |
Where-Object { $_.LevelDisplayName -in @("Error","Warning") } |
Select-Object TimeCreated, LevelDisplayName, ProviderName, Id, Message |
Out-File "C:\logs\driver_suspect_system.log"
ファイルが作成できていれば、抽出と保存はできています。
出力先フォルダがない場合は作成してから実行してください。
- Group-Object で頻出Providerを確認して疑いポイントを絞る
- FilterHashtable(StartTime/EndTime)で時刻範囲を切り出す
- Out-File や Export-Csv で共有しやすくする
🧩 よくある勘違い・つまずきポイント
- イベントログに「ドライバー名」が必ず出るわけではない
- 強制再起動(41)は原因確定ではなく「異常終了の結果」に近い
- ログが多い環境で Where-Object の後処理を多用すると遅くなることがある
- 不具合の原因がハード(電源/メモリ/ストレージ)でも、ドライバーっぽいログが出る場合がある
- 古い履歴はログローテーションで消えている場合がある
⚠ エラー・うまく動かないときの確認ポイント
- まずは -MaxEvents を小さめにして動作確認しているか
- 時刻指定(StartTime/EndTime)が正しいか(未来/過去の指定になっていないか)
- 保存先(例:C:\logs)が存在するか
- 管理者として実行が必要な環境ではないか
- System以外(Application)に手がかりがある可能性を見落としていないか
🧠 注意点
「ドライバー起因かどうか」は、イベントログだけで断定できない場合があります。
ただ、ログから「怪しい時刻」「頻出するProvider」「直前の警告/エラー」を掴めれば、
ドライバー更新の影響やデバイスの切り分けに進めやすくなります。
もしイベントログで手がかりが薄い場合は、
ミニダンプ解析や、最近のドライバー更新履歴、周辺機器の取り外しテストなど、
別の観点と組み合わせるのが現実的です。
📌 まとめ
- ドライバー起因を疑うときは、異常終了の時刻(41/6008/1001)から入口を作る
- その前後のSystemログで警告/エラーの流れとProviderの繰り返しを見る
- 頻出Providerの上位を集計すると、疑いポイントが整理しやすい
- 次はApplicationログ側の警告/エラーも併せて確認すると理解が深まる
- やりたいことが曖昧な場合は検索フォームを使うと探しやすい
🔎 PowerShellコマンドを探す
やりたいことから、関連するPowerShellコマンドや記事を探せます。
- ファイルを削除したい
- 一覧を表示したい
- 文字列を検索したい
- 条件で絞り込みたい
- エラーや実行できない原因を調べたい
- ドライバーやデバイスのエラー履歴を確認したい(Systemログの警告/エラー)
- 突然の再起動の直前ログを切り出したい(StartTime/EndTime)
- 頻出するエラー発生元(Provider)を集計したい(Group-Object)
