名称: 系统诊断 描述: 通过PowerShell进行全面的Windows 11系统诊断。诊断崩溃、冻结、重启、蓝屏死机(BSOD)、磁盘健康、内存问题、硬件错误和性能问题。在故障排除Windows稳定性问题、分析事件查看器日志、检查磁盘/内存健康、调查硬件错误或诊断系统性能问题时使用。 允许的工具: Bash, Read, Glob, Grep
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+以获得一致行为。
快速开始
即时系统健康检查
运行这些命令以获取系统健康快速概览:
# 系统信息和运行时间
Get-Uptime
Get-ComputerInfo | Select-Object OsName, OsVersion, OsBuildNumber, CsProcessors, CsTotalPhysicalMemory
# 最近关键/错误事件(过去7天)
Get-WinEvent -FilterHashtable @{LogName='System';Level=1,2;StartTime=(Get-Date).AddDays(-7)} -MaxEvents 20 |
Select-Object TimeCreated, Id, ProviderName, Message | Format-Table -Wrap
# 磁盘健康
Get-PhysicalDisk | Select-Object FriendlyName, MediaType, Size, HealthStatus, OperationalStatus
# 顶部内存消耗者
Get-Process | Sort-Object WorkingSet64 -Descending |
Select-Object -First 10 ProcessName, Id, @{N='MB';E={[math]::Round($_.WorkingSet64/1MB,0)}}
# 设备错误
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 |
| 崩溃 | Minidumps、WER、BSOD分析 | crash-analysis.md |
| 提升 | 管理员要求、优雅降级 | admin-elevation.md |
快速健康检查
系统信息
# 基本系统信息
Get-ComputerInfo | Select-Object `
OsName, OsVersion, OsBuildNumber, `
CsName, CsDomain, `
CsProcessors, CsNumberOfLogicalProcessors, `
@{N='RAM_GB';E={[math]::Round($_.CsTotalPhysicalMemory/1GB,1)}}
# 系统运行时间
Get-Uptime
Get-Uptime -Since # 上次启动时间
最近系统错误
# 系统日志中的关键和错误事件(过去7天)
Get-WinEvent -FilterHashtable @{
LogName = 'System'
Level = 1,2 # 1=关键, 2=错误
StartTime = (Get-Date).AddDays(-7)
} -MaxEvents 50 | Select-Object TimeCreated, Id, ProviderName, LevelDisplayName, Message
磁盘快速检查
# 物理磁盘健康
Get-PhysicalDisk | Select-Object FriendlyName, MediaType, Size, HealthStatus, OperationalStatus
# 类似SMART的可靠性数据
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
}
}
内存快速检查
# 系统内存概览
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)}}
# 前10个内存消耗进程
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)}}
硬件快速检查
# 有错误的设备
Get-PnpDevice -PresentOnly | Where-Object { $_.Status -in 'Error','Degraded','Unknown' } |
Select-Object Class, FriendlyName, InstanceId, Status
# WHEA硬件错误(过去30天)
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、minidump、崩溃、WER | crash-analysis.md |
| 管理员、提升、权限 | admin-elevation.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 minidumps
- 审查硬件错误(WHEA)
- 检查磁盘和内存健康
关键命令:
# 最近重启事件
Get-WinEvent -FilterHashtable @{LogName='System';Id=41,1074,6008} -MaxEvents 20
# BSOD事件
Get-WinEvent -FilterHashtable @{LogName='System';ProviderName='Microsoft-Windows-WER-SystemErrorReporting'} -MaxEvents 10
# 检查minidumps
Get-ChildItem C:\Windows\Minidump -ErrorAction SilentlyContinue
场景:性能慢
- 检查CPU/内存/磁盘利用率
- 识别资源密集型进程
- 检查磁盘健康问题
- 查找硬件节流
关键命令:
# 当前资源使用情况
Get-Counter -Counter '\Processor(_Total)\% Processor Time','\Memory\% Committed Bytes In Use','\PhysicalDisk(_Total)\% Disk Time'
# 顶部CPU消耗者
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 ProcessName, CPU, @{N='MB';E={[math]::Round($_.WorkingSet64/1MB)}}
场景:怀疑磁盘错误
- 检查物理磁盘健康状态
- 审查SMART可靠性计数器
- 查找磁盘相关事件
- 检查文件系统脏位
关键命令:
# 磁盘健康
Get-PhysicalDisk | Select-Object FriendlyName, HealthStatus, OperationalStatus
# 可靠性计数器
Get-PhysicalDisk | Get-StorageReliabilityCounter | Select-Object DeviceId, Temperature, ReadErrorsTotal, WriteErrorsTotal
# 最近磁盘事件
Get-WinEvent -FilterHashtable @{LogName='System';ProviderName='disk','ntfs'} -MaxEvents 20
场景:内存问题
- 检查当前内存使用情况
- 识别内存密集型进程
- 查找内存相关事件
- 检查之前内存诊断结果
关键命令:
# 内存使用情况
Get-CimInstance Win32_OperatingSystem | Select-Object @{N='Used%';E={[math]::Round((1-$_.FreePhysicalMemory/$_.TotalVisibleMemorySize)*100,1)}}
# 顶部内存进程
Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 10 ProcessName, @{N='MB';E={[math]::Round($_.WorkingSet64/1MB)}}
# 内存诊断结果
Get-WinEvent -FilterHashtable @{LogName='System';ProviderName='Microsoft-Windows-MemoryDiagnostics-Results'} -ErrorAction SilentlyContinue
反模式
不要:
- 执行修复命令(如chkdsk /f, sfc /scannow等)- 仅建议它们
- 运行需要重启的命令(如mdsched.exe)而无明确用户同意
- 假设管理员权限可用
- 忽略提升错误 - 报告它们并建议以管理员身份运行
- 无诊断证据做出硬件推荐
要:
- 深入前从快速健康检查开始
- 根据调查需求渐进加载参考
- 以严重性(关键、警告、信息)报告发现
- 为用户提供可操作的下一步
- 解释每个建议修复命令的作用
版本历史
- v1.0.0 (2025-12-03): 初始发布,包含Windows 11诊断
最后更新
日期: 2025-12-03 模型: claude-opus-4-5-20251101