windows-ops 是一套面向 Windows 工作站的综合运维与诊断技能,核心目标是帮助用户定位开机缓慢、磁盘静默故障、无明显原因的崩溃、无法禁用的 HKLM 启动项、无转储的蓝屏、异常 UAC 提示、磁盘是否可安全拔出、故障磁盘克隆、无法启动恢复、远程诊断以及热机或提交内存耗尽等问题。其基本主张是:Windows 会在正确的日志中以正确的方式告诉你问题所在,真正的诊断信号存在于事件日志、注册表 StartupApproved 键、存储驱动的重置事件和内核 bugcheck 记录中,而非任务管理器。
诊断采用分层阶梯:第 0 层先判断是否为本地磁盘——若盘符出现在 SMB 映射或非空 DisplayRoot 中,则属于网络问题,应转交 net-ops,避免对网络映射运行本地磁盘检查而得出误判。第 1 层检查硬件错误(WHEA-Logger 事件)。第 2 层检查存储健康,包括磁盘事件 7(坏块)、154(硬件错误)、52、153 以及 storahci 129(控制器重置)。第 3 层查看崩溃记录:事件 41(Kernel-Power)及 BugCheck 码与转储文件。第 4 层还原崩溃前 N 分钟的时间线。第 5 层清点五类启动机制。第 6 层评估资源压力,包括 CPU 速率采样、提交内存占用者、孤儿进程和过期 hosts。第 7 层给出结论:什么在失败,该怎么做。
主要能力由一组 PowerShell 脚本构成。health-audit.ps1 执行综合审计并输出结论块,包含硬件错误、每块磁盘的存储健康、近期崩溃、资源占用最高者与启动清单,并标记 [FAIL] 供深入排查。disk-health.ps1 对指定磁盘做 SMART、全部事件 ID、与磁盘相关的控制器重置及结论。crash-triage.ps1 提供崩溃前时间线与 BugCheck 解码,检测“确凿证据”。drive-dependencies.ps1 检查页面文件、搜索索引、计划任务、服务、符号链接、启动快捷方式和运行键引用是否指向某磁盘,用于判断能否安全断开。boot-perf.ps1 从 Diagnostics-Performance 日志(管理员)或内核事件(非管理员)提取每次启动耗时并标记慢组件。safe-disable-startup.ps1 可禁用 Run 键、启动文件夹快捷方式中的启动项并支持通配符与 -List/-Enable,无需管理员即可禁用 HKLM 项(通过 StartupApproved 单字节标志),且可逆。process-triage.ps1 通过两次 CPU 采样给出单核占用百分比,结合私有提交、进程年龄与孤儿状态,标记高占用进程,-Tree 输出自叶到根的有序列表供谨慎终止,并保护调查会话自身进程链,始终不主动终止任何进程。copy-tree.ps1 支持普通复制、Rescue 模式(robocopy /R:0 /W:0 /MT:1 避免反复读写坏扇区)与 Mirror 模式(会删除目标端多余内容)。rescue-image.ps1 使用 ddrescue 做可续传的镜像;extract-image.ps1 用 7-Zip 只读提取镜像内文件。
存储健康是收益最高的审计项。故障磁盘会导致开机慢(Windows 探测超时)、不稳定(控制器重置级联为内核挂起)和崩溃(I/O 失败杀死关键进程)。磁盘事件 7 与 154 为高严重度:一个月 10 次即为强烈故障信号,数百次应立即更换;storahci 129 健康值为零,一个月超过 5 次即为活动故障。\Device\HarddiskN 对应 Get-Disk 的 N 号。启动机制共有五类:注册表 Run 键(含 WOW6432)、服务、登录计划任务、启动文件夹快捷方式、组策略启动脚本,任务管理器只显示其中两类。任务管理器的禁用会在 HKCU 下写入 12 字节 StartupApproved 标志(0x02 启用、0x03 禁用)。启动耗时在仅管理员的 Diagnostics-Performance 日志中,健康 SSD 到登录约 15–25 秒,故障存储 60 秒以上。
崩溃分析方面,事件 41 的 Properties[0] 是 BugCheck 码(0x0 表示未记录,可能是硬断电或挂起),索引 6 非零表示按住电源键。崩溃前 10 分钟的事件揭示原因:storahci 129 指向存储级联,GPU 驱动警告指向驱动挂起,WHEA 指向硬件故障,静默则指向完全挂起。崩溃后无转储需检查 CrashControl\CrashDumpEnabled 与页面文件大小。
失控进程排查的原则是测量速率而非血缘:累计 CPU 只能说明历史,孤儿扫描只能发现父进程已死,两者都无法发现“监督者仍存活、进程卡住并接近占满一核却无产出”的高开销情形。因此脚本采样 CPU 速率、提交内存、年龄与孤儿状态,并建议报告提交内存而非 RAM,因为 Windows 会先耗尽提交内存(RAM 加页面文件保证,Win32_OperatingSystem.FreeVirtualMemory),释放提交内存往往比终止进程本身回收更多。
恢复模式强调:绝不对故障磁盘运行 chkdsk /f,修复写入会触碰坏扇区并可能彻底报废磁盘,应先做镜像再修镜像。克隆可用 robocopy /MIR /R:0 /W:0 /XJ /NDL /LOG,位级恢复用 ddrescue 配合 map 文件实现可续传。物理移除故障磁盘需先用 disk-health.ps1 识别,再验证无关键依赖,然后断开 SATA、在 BIOS 禁用或在 diskpart 设为离线,重启后开机时间应显著下降、控制器重置应停止。
输出风格遵循诊断约定:扫描行带 [PASS]/[FAIL]/[WARN]/[INFO] 前缀,底部为含具体发现与建议的结论块,磁盘标识包含物理磁盘号、型号、容量和盘符,崩溃引用包含 UTC 时间戳、BugCheck 码、主参数和疑似原因,不使用营销语言。
不覆盖范围:网络诊断(网络映射、Disconnected/Unavailable、UNC 路径、SMB、NAS/Synology、net use 失败、共享拒绝访问)归 net-ops;应用性能剖析(火焰图、py-spy/pprof、负载测试、慢查询)归 perf-ops;源码级调试归 debug-ops;WinDbg 内核转储分析仅提供参考文档指引;组策略诊断在企业外少见;WSL 问题属独立领域。脚本均支持 -Json(配合 jq)与 -Verbose,管道输出时去掉面板装饰。