需先启用自动或完全内存转储,DUMP文件默认存于C:\Windows\MEMORY.DMP或C:\Windows\Minidump*.dmp;PowerShell脚本可自动扫描并用dumpchk.exe提取蓝屏错误码及名称,支持WinDbg Preview深入分析堆栈,建议结构化归档与定期监控。
准备环境:启用内存转储并定位 DUMP 文件位置
windows 默认可能未启用完整内存转储,需先确认设置。按 win + r 输入 sysdm.cpl → “高级”选项卡 → “启动和故障恢复” → “设置” → 检查“写入调试信息”是否为“自动内存转储”或“完全内存转储”(推荐前者,兼顾信息量与磁盘空间)。dump 文件默认存于:c:\windows\memory.dmp(完整转储)或 c:\windows\minidump\*.dmp(小型转储,更常见)。powershell 脚本需优先检查这些路径是否存在有效 .dmp 文件。
基础脚本:自动发现并提取关键蓝屏信息
以下 PowerShell 脚本可扫描 Minidump 目录、读取每个 .dmp 的基本崩溃数据(无需安装 WinDbg):
$minidumpPath = "$env:SystemRoot\Minidump\*.dmp"
$dumps = Get-ChildItem $minidumpPath -ErrorAction SilentlyContinue
<p>if (-not $dumps) {
Write-Host "未找到 .dmp 文件,请检查是否发生过蓝屏或转储功能是否启用。" -ForegroundColor Yellow
exit
}</p><p>Write-Host "发现 $($dumps.Count) 个小型转储文件:" -ForegroundColor Green
foreach ($dump in $dumps) {</p><h1>使用 built-in Windows 工具 dumpchk.exe(随系统自带,位于 System32)</h1><pre class='brush:php;toolbar:false;'>$dumpchk = "$env:SystemRoot\System32\dumpchk.exe"
if (Test-Path $dumpchk) {
$output = & $dumpchk $dump.FullName 2>&1 | Out-String
$bugCheck = [regex]::Match($output, 'Bug Check Code:\s+0x([0-9A-Fa-f]+)').Groups[1].Value
$bugName = switch ($bugCheck) {
"0x0000007E" { "SYSTEM_THREAD_EXCEPTION_NOT_HANDLED" }
"0x0000003B" { "SYSTEM_SERVICE_EXCEPTION" }
"0x0000001A" { "MEMORY_MANAGEMENT" }
default { "未知错误码: 0x$bugCheck" }
}
$timestamp = $dump.LastWriteTime.ToString("yyyy-MM-dd HH:mm")
Write-Host "[$timestamp] $dump.Name → $bugName" -ForegroundColor Cyan
}}
进阶分析:调用 WinDbg(Preview)自动化解析堆栈
如需深入定位驱动/模块问题,建议配合 WinDbg Preview(Microsoft Store 免费安装),其支持命令行静默分析。确保已安装后,用以下逻辑扩展脚本:
- 下载 Windows SDK 调试工具 或直接安装 WinDbg Preview(自动注册
dbgeng.dll) - 使用
winver确认系统版本,匹配正确的符号服务器(如https://msdl.microsoft.com/download/symbols) - 通过
symchk.exe或ldntvdm预加载符号(可选但提升准确性) - 执行命令:
WinDbg.exe -z "$dump.FullName" -c "!analyze -v;q"→ 捕获输出并提取 Faulting module、STACK_TEXT 关键段
注意:首次运行需联网下载符号,后续会缓存至 %LOCALAPPDATA%\SymCache;若权限不足,请以管理员身份运行 PowerShell。
实用建议:日常监控与日志归档
将分析结果结构化保存,便于追踪趋势:
- 每次运行脚本时,用
Export-Csv -Append记录时间、错误码、模块名、dump 文件哈希(Get-FileHash $dump -Algorithm SHA256),避免重复分析同一崩溃 - 设置计划任务(
Register-ScheduledTask),每周扫描一次 Minidump 目录并邮件通知异常高频错误码 - 对反复出现的驱动(如 nvlddmkm.sys、dxgkrnl.sys),结合
driverquery /v查看版本及签名状态 - 禁用可疑启动项:
msconfig或Get-CimInstance Win32_StartupCommand辅助排查第三方软件干扰
不复杂但容易忽略:蓝屏未必源于硬件——约 70% 案例由驱动兼容性、Windows 更新冲突或杀软钩子引发。脚本只是起点,关键在比对错误模式与最近系统变更。


















