system-diagnostics について
Windows System Diagnostics は、Windows 11 の問題を調べる PowerShell スキルです。イベントログやディスク、メモリ、ハードウェア、性能を読み取り専用で診断し、修復操作はユーザー向けの提案にとどめます。
主な機能
- 01Windows イベントログの分析
- 02ディスクの健康状態と信頼性データの確認
- 03メモリ使用状況と関連問題の確認
- 04ハードウェアおよびドライバーエラーの検出
- 05性能とシステム安定性の分析
活用シーン
- 01予期しない再起動、フリーズ、ブルースクリーンの調査
- 02ディスクエラーと健康状態の確認
- 03メモリ使用問題や性能ボトルネックの特定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ melodic-software/ claude-code-plugins --skill system-diagnosticsインストール後、Claude Code で/system-diagnosticsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/admin-elevation.mdcrash-analysis.mddisk-health.mdevent-logs.mdhardware-errors.mdmemory-diagnostics.mdperformance-analysis.mdsystem-stability.md詳細
Windows システム診断
PowerShell を使用した、Windows 11 の包括的なシステム診断です。このスキルは、クラッシュ、フリーズ、予期しない再起動、ディスクの問題、メモリの問題、ハードウェアエラー、パフォーマンスのボトルネックの診断に役立ちます。
目次
- クイックスタート - すぐに使える診断コマンド
- プラットフォーム要件 - Windows 11、PowerShell 7+
- 診断カテゴリ - このスキルで対応する内容
- クイックヘルスチェック - システムの概要をすばやく確認
- リファレンスの読み込み - 段階的な情報開示
- 安全性モデル - 読み取り専用と修復の提案
- よくある問題 - トラブルシューティングのパターン
概要
このスキルでは、システムの健全性に関する情報を収集する読み取り専用の診断機能を提供します。修復コマンドは実行しません。修復コマンドは、ユーザーが手動で実行するための提案として提示します。
機能:
- イベントログの分析(クラッシュ、エラー、警告)
- ディスクの健全性の監視(SMART データ、ファイルシステムエラー)
- メモリ診断(使用状況、リーク、ハードウェアの問題)
- ハードウェアエラーの検出(デバイスの故障、ドライバー、WHEA)
- パフォーマンス分析(CPU、メモリ、ディスクのボトルネック)
- システム安定性の指標(稼働時間、再起動の理由)
このスキルを使用する場面
次の場合にこのスキルを使用してください。
- コンピューターがクラッシュ、フリーズ、または予期せず再起動する
- ブルースクリーン(BSOD)エラーが発生する
- ディスクの健全性に懸念がある(動作が遅い、エラーが発生する)
- メモリの問題が疑われる(使用率が高い、負荷時にクラッシュする)
- ハードウェアエラーやドライバーの問題がある
- Windows イベントビューアーのログを分析する必要がある
- システムのパフォーマンスが低下している
- アプリケーションのクラッシュを調査している
プラットフォーム要件
必須:
- Windows 11(このスキルは Windows 11 Pro 向けに最適化されています)
- 互換性を最大限に高めるには PowerShell 7+(
pwsh)
PowerShell のバージョンを確認する:
$PSVersionTable.PSVersion
注: ほとんどのコマンドは Windows PowerShell 5.1 でも動作しますが、一貫した動作のために PowerShell 7+ を推奨します。
クイックスタート
すぐに実行できるシステムヘルスチェック
次のコマンドを実行すると、システムの健全性をすばやく確認できます。
# System info and uptime
Get-Uptime
Get-ComputerInfo | Select-Object OsName, OsVersion, OsBuildNumber, CsProcessors, CsTotalPhysicalMemory
# Recent critical/error events (last 7 days)
Get-WinEvent -FilterHashtable @{LogName='System';Level=1,2;StartTime=(Get-Date).AddDays(-7)} -MaxEvents 20 |
Select-Object TimeCreated, Id, ProviderName, Message | Format-Table -Wrap
# Disk health
Get-PhysicalDisk | Select-Object FriendlyName, MediaType, Size, HealthStatus, OperationalStatus
# Top memory consumers
Get-Process | Sort-Object WorkingSet64 -Descending |
Select-Object -First 10 ProcessName, Id, @{N='MB';E={[math]::Round($_.WorkingSet64/1MB,0)}}
# Device errors
Get-PnpDevice -PresentOnly | Where-Object { $_.Status -in 'Error','Degraded','Unknown' } |
Select-Object Class, FriendlyName, Status
診断カテゴリ
| カテゴリ | 説明 | リファレンス |
|---|---|---|
| イベントログ | Windows イベントビューアーの分析 | event-logs.md |
| ディスクの健全性 | SMART データ、ファイルシステム、ストレージ | disk-health.md |
| メモリ | RAM の使用状況、リーク、ハードウェア | memory-diagnostics.md |
| 安定性 | 稼働時間、再起動、BSOD | system-stability.md |
| ハードウェア | デバイスエラー、WHEA、ドライバー | hardware-errors.md |
| パフォーマンス | CPU、メモリ、ディスクのボトルネック | performance-analysis.md |
| クラッシュ | ミニダンプ、WER、BSOD の分析 | crash-analysis.md |
| 権限昇格 | 管理者権限の要件、段階的な機能低下 | admin-elevation.md |
クイックヘルスチェック
システム情報
# Basic system info
Get-ComputerInfo | Select-Object `
OsName, OsVersion, OsBuildNumber, `
CsName, CsDomain, `
CsProcessors, CsNumberOfLogicalProcessors, `
@{N='RAM_GB';E={[math]::Round($_.CsTotalPhysicalMemory/1GB,1)}}
# System uptime
Get-Uptime
Get-Uptime -Since # Last boot time
最近のシステムエラー
# Critical and Error events from System log (last 7 days)
Get-WinEvent -FilterHashtable @{
LogName = 'System'
Level = 1,2 # 1=Critical, 2=Error
StartTime = (Get-Date).AddDays(-7)
} -MaxEvents 50 | Select-Object TimeCreated, Id, ProviderName, LevelDisplayName, Message
ディスクのクイックチェック
# Physical disk health
Get-PhysicalDisk | Select-Object FriendlyName, MediaType, Size, HealthStatus, OperationalStatus
# SMART-like reliability data
Get-PhysicalDisk | ForEach-Object {
$disk = $_
$counters = $_ | Get-StorageReliabilityCounter
[PSCustomObject]@{
Disk = $disk.FriendlyName
Health = $disk.HealthStatus
Temperature = $counters.Temperature
ReadErrors = $counters.ReadErrorsTotal
WriteErrors = $counters.WriteErrorsTotal
PowerOnHours = $counters.PowerOnHours
}
}
メモリのクイックチェック
# System memory overview
Get-CimInstance Win32_OperatingSystem | Select-Object `
@{N='Total_GB';E={[math]::Round($_.TotalVisibleMemorySize/1MB,2)}},
@{N='Free_GB';E={[math]::Round($_.FreePhysicalMemory/1MB,2)}},
@{N='Used_Pct';E={[math]::Round((1 - $_.FreePhysicalMemory/$_.TotalVisibleMemorySize)*100,1)}}
# Top 10 memory-consuming processes
Get-Process | Sort-Object WorkingSet64 -Descending |
Select-Object -First 10 ProcessName, Id,
@{N='WS_MB';E={[math]::Round($_.WorkingSet64/1MB,0)}},
@{N='PM_MB';E={[math]::Round($_.PrivateMemorySize64/1MB,0)}}
ハードウェアのクイックチェック
# Devices with errors
Get-PnpDevice -PresentOnly | Where-Object { $_.Status -in 'Error','Degraded','Unknown' } |
Select-Object Class, FriendlyName, InstanceId, Status
# WHEA hardware errors (last 30 days)
Get-WinEvent -FilterHashtable @{
LogName = 'System'
ProviderName = 'Microsoft-Windows-WHEA-Logger'
StartTime = (Get-Date).AddDays(-30)
} -MaxEvents 20 -ErrorAction SilentlyContinue | Select-Object TimeCreated, Id, Message
リファレンスの読み込みガイド
調査する診断カテゴリに応じて、リファレンスを必要に応じて読み込みます。この段階的な情報開示により、トークンの使用量を効率的に抑えられます。
常に読み込む(コア)
メインの SKILL.md には、初期トリアージ用のクイックコマンドが記載されています(約 4k トークン)。
条件付き読み込み
調査内容に応じて、特定のリファレンスを読み込みます。
| トリガー | 読み込むリファレンス |
|---|---|
| イベントログ、エラー、警告 | event-logs.md |
| ディスク、ストレージ、SMART、chkdsk | disk-health.md |
| メモリ、RAM、ページング、リーク | memory-diagnostics.md |
| 稼働時間、再起動、信頼性 | system-stability.md |
| ハードウェア、ドライバー、WHEA、デバイス | hardware-errors.md |
| CPU、パフォーマンス、ボトルネック | performance-analysis.md |
| BSOD、ミニダンプ、クラッシュ、WER | crash-analysis.md |
| 管理者権限、昇格、アクセス許可 | admin-elevation.md |
トークンの推定数
- 簡易ヘルスチェック:約4kトークン(SKILL.md のみ)
- 単一カテゴリの詳細調査:約7kトークン(SKILL.md + リファレンス1件)
- 完全な診断:約25kトークン(SKILL.md + すべてのリファレンス)
安全性モデル
このスキルは読み取り専用の診断モデルに従います。スキルが実行するすべてのコマンドは情報を収集するだけで、システムを変更することはありません。
読み取り専用(スキルが実行可能)
以下のコマンドは安全に実行できます。
| カテゴリ | コマンド |
|---|---|
| イベントログ | Get-WinEvent |
| ディスクの状態 | Get-PhysicalDisk、Get-StorageReliabilityCounter、Get-Volume |
| メモリ | Get-Process、Get-CimInstance Win32_OperatingSystem |
| デバイス | Get-PnpDevice |
| パフォーマンス | Get-Counter |
| システム情報 | Get-Uptime、Get-ComputerInfo |
提案のみ(ユーザーが手動で実行)
以下の修復/診断コマンドはシステムを変更するか、再起動が必要です。スキルは手順を提示しますが、実行はしません。
| コマンド | 目的 | 備考 |
|---|---|---|
chkdsk /f /r | ディスクの修復 | システムドライブでは再起動が必要 |
sfc /scannow | システムファイルの修復 | 管理者権限が必要 |
DISM /Online /Cleanup-Image /RestoreHealth | システムイメージの修復 | 管理者権限とインターネット接続が必要 |
mdsched.exe | メモリ診断 | 再起動が必要 |
Repair-Volume -SpotFix | ディスクの簡易修復 | 管理者権限が必要 |
| ドライバーの再インストール | ドライバーの問題を修正 | 手動での操作が必要 |
権限昇格に関する注意
一部の読み取り専用操作には管理者権限が必要です。
Get-WinEvent -LogName Security(セキュリティログ)Repair-Volume -Scan(読み取り専用スキャンでも必要)- 一部の WMI クエリ
スキルは、権限昇格が必要な場合にその旨を示し、管理者権限がない場合でも適切に対応できるようにします。
よくある診断シナリオ
シナリオ:コンピューターが繰り返しクラッシュ/再起動する
- 稼働時間と最近の再起動イベントを確認する
- Kernel-Power イベント ID 41(予期しないシャットダウン)を探す
- BSOD のミニダンプを確認する
- ハードウェアエラー(WHEA)を確認する
- ディスクとメモリの状態を確認する
主なコマンド:
# Recent restart events
Get-WinEvent -FilterHashtable @{LogName='System';Id=41,1074,6008} -MaxEvents 20
# BSOD events
Get-WinEvent -FilterHashtable @{LogName='System';ProviderName='Microsoft-Windows-WER-SystemErrorReporting'} -MaxEvents 10
# Check for minidumps
Get-ChildItem C:\Windows\Minidump -ErrorAction SilentlyContinue
シナリオ:パフォーマンスが低下している
- CPU/メモリ/ディスクの使用率を確認する
- リソースを大量に消費しているプロセスを特定する
- ディスクの状態に問題がないか確認する
- ハードウェアのスロットリングを調べる
主なコマンド:
# Current resource usage
Get-Counter -Counter '\Processor(_Total)\% Processor Time','\Memory\% Committed Bytes In Use','\PhysicalDisk(_Total)\% Disk Time'
# Top CPU consumers
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 ProcessName, CPU, @{N='MB';E={[math]::Round($_.WorkingSet64/1MB)}}
シナリオ:ディスクエラーが疑われる
- 物理ディスクの状態を確認する
- SMART の信頼性カウンターを確認する
- ディスク関連のイベントを探す
- ファイルシステムのダーティビットを確認する
主なコマンド:
# Disk health
Get-PhysicalDisk | Select-Object FriendlyName, HealthStatus, OperationalStatus
# Reliability counters
Get-PhysicalDisk | Get-StorageReliabilityCounter | Select-Object DeviceId, Temperature, ReadErrorsTotal, WriteErrorsTotal
# Recent disk events
Get-WinEvent -FilterHashtable @{LogName='System';ProviderName='disk','ntfs'} -MaxEvents 20
シナリオ:メモリの問題が発生している
- 現在のメモリ使用量を確認する
- メモリを大量に消費しているプロセスを特定する
- メモリ関連のイベントを探す
- 過去のメモリ診断結果を確認する
主なコマンド:
# Memory usage
Get-CimInstance Win32_OperatingSystem | Select-Object @{N='Used%';E={[math]::Round((1-$_.FreePhysicalMemory/$_.TotalVisibleMemorySize)*100,1)}}
# Top memory processes
Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 10 ProcessName, @{N='MB';E={[math]::Round($_.WorkingSet64/1MB)}}
# Memory diagnostic results
Get-WinEvent -FilterHashtable @{LogName='System';ProviderName='Microsoft-Windows-MemoryDiagnostics-Results'} -ErrorAction SilentlyContinue
アンチパターン
次のことはしないでください:
- 修復コマンド(chkdsk /f、sfc /scannow など)を実行しないでください。提案するだけにしてください
- 明示的なユーザーの同意なく、再起動が必要なコマンド(mdsched.exe)を実行しないでください
- 管理者権限を利用できると決めつけないでください
- 権限昇格エラーを無視しないでください。エラーを報告し、管理者として実行するよう提案してください
- 診断結果の根拠なく、ハードウェアを推奨しないでください
次のことをしてください:
- 詳細な調査に入る前に、簡単なヘルスチェックから始めてください
- 調査の必要に応じて、参照情報を段階的に読み込んでください
- 重要度(Critical、Warning、Info)を付けて調査結果を報告してください
- ユーザーが実行できる具体的な次の手順を提示してください
- 提案する修復コマンドがそれぞれ何をするのか説明してください
バージョン履歴
- v1.0.0(2025-12-03):Windows 11 の診断機能を初回リリース
最終更新日
日付: 2025-12-03 モデル: claude-opus-4-5-20251101