mcpField
W
windows-ops

windows-ops

github.com/0xdarkmatter其他7842 次安装2 周前更新
代码仓库

关于 windows-ops

windows-ops 是用于诊断和处理 Windows 启动、磁盘、崩溃及资源问题的运维技能,适合需要依据系统日志定位故障的用户。它按诊断层级检查事件日志、注册表和硬件信号,并提供可逆的启动项管理与数据恢复脚本。

主要功能

  1. 01按诊断层级审查系统日志
  2. 02检查磁盘健康与存储事件
  3. 03分析崩溃记录和崩溃前时间线
  4. 04盘点并可逆禁用启动项
  5. 05采样进程 CPU 与提交量
  6. 06提供磁盘复制和映像恢复脚本

适用场景

  1. 01调查启动变慢或启动项过多
  2. 02定位磁盘故障、系统冻结与蓝屏
  3. 03诊断进程占用与提交压力
  4. 04从故障磁盘复制文件或制作映像

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/0xdarkmatter/claude-mods --skill windows-ops

安装后在 Claude Code 中输入/windows-ops确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
bugcheck-codes.md
manual-queries.md
process-triage.md
recovery-patterns.md
reference-index.md
remote-diagnostics.md
startup-mechanisms.md
storage-events.md
symptom-guide.md
uac-attribution.md
worked-example.md
wsl.md
scripts/
boot-perf.ps1
copy-tree.ps1
crash-triage.ps1
disk-health.ps1
drive-dependencies.ps1
extract-image.ps1
health-audit.ps1
process-triage.ps1
rescue-image.ps1
safe-disable-startup.ps1
scripts/_lib/
common.ps1
tests/
run.sh

详细介绍

windows-ops

可处理的问题

启动缓慢或越来越慢、硬盘悄无声息地发生故障、没有明显原因的崩溃、无法在没有管理员权限的情况下禁用的 HKLM 启动项、没有生成转储文件的蓝屏、原因不明的 UAC 提示、“拔掉这个硬盘安全吗?”,克隆故障硬盘、无法启动时的恢复、远程诊断,以及发热或提交量超限却无法从启动时解释原因的计算机。各种信号所在位置:references/symptom-guide.md。

核心要点

只要以正确方式查询正确的日志,Windows 就会告诉你问题所在。 大多数用户(以及大多数教程)都会去看任务管理器。真正的诊断信号存在于事件日志、注册表的 StartupApproved 键、存储驱动程序的重置事件,以及内核的错误检查记录中。本技能封装了可将噪声转化为结论的查询。

最常见的诊断失败:孤立地看待各种症状。“启动缓慢” → 禁用启动应用。“蓝屏” → 重新安装驱动程序。“随机崩溃” → 运行内存测试。这些都是合理的最后手段,但用于找出实际原因的数据就静静地躺在系统日志中,没人查看。务必先审计,再处理。

诊断阶梯

按顺序逐层排查。每一层都有一个二元结果:

0. Is it even local?  — a "drive" that is a network mapping belongs to net-ops
1. Hardware errors    — WHEA-Logger events (CPU/RAM/PCIe-level faults)
2. Storage health     — disk events 7/52/153/154, storahci 129 (controller reset)
3. Crash record       — Event 41 (Kernel-Power) + BugCheck code + dump files
4. Pre-crash timeline — events in N minutes before each crash
5. Boot inventory     — all 5 startup mechanisms (registry, services, tasks, folders, group policy)
6. Resource pressure  — CPU RATE sample, commit hoarders, orphans, stale hosts
7. Verdict            — what's failing, what to do

最值得关注的故障集中在第 2 层(存储)和第 5 层(启动项过多)。第 6 层最常被处理,也最容易被误读:任务管理器在这一层的快照确实价值不高,因此常被一笔带过——但在同一层采集 CPU 速率,就能发现快照和孤儿检查都无法识别的挂起进程。

工作流

0. 首先确认盘符的类型

用户说“Z: 盘坏了”时,无法确定这是物理硬盘故障(本技能处理)还是 SMB/名称解析故障(net-ops)——无论哪种情况,盘符看起来都一样。运行其他操作前,先确认:

Get-SmbMapping                            # network mappings + Status (Connected / Disconnected / Unavailable)
Get-PSDrive -PSProvider FileSystem | Where-Object DisplayRoot   # non-empty DisplayRoot = UNC-backed

如果结果中出现该盘符,它就是网络映射——请在此处停止,并移交给 net-ops(scripts/windows/smb-audit.ps1)。 不要运行物理硬盘排查流程:disk-health.ps1 和 drive-dependencies.ps1 只能检测本地硬盘,因此会对确实存在故障的硬盘报告一切正常,这比不报告任何内容更糟。

以下内容均假设硬盘已在本地物理连接。

1. 运行全面审计
scripts/health-audit.ps1

会生成结论块:硬件错误、各硬盘的存储健康状况、近期崩溃、资源消耗最多的进程、启动项清单。查找 [FAIL] 标记——这些就是需要深入排查的地方。

2. 深入排查故障层
症状脚本
标记了存储错误scripts/disk-health.ps1 -DiskNumber N(或 -DriveLetter X 或 -Model 'HGST')——针对单个硬盘的深入检查:SMART、所有事件 ID、可归因于该硬盘的控制器重置,以及结论
近期发生崩溃scripts/crash-triage.ps1 -CrashTime <datetime>(或省略以查看最近一次崩溃)——崩溃前时间线 + BugCheck 解码,并检测关键线索
“断开 X 盘安全吗?”scripts/drive-dependencies.ps1 -DriveLetter X——查找指向该盘的页面文件、搜索索引、计划任务、服务、符号链接、启动快捷方式和运行键引用
“为什么启动这么慢?”scripts/boot-perf.ps1——从 Diagnostics-Performance 日志(管理员)或内核事件备用数据(非管理员)获取每次启动的耗时,并标记耗时较长的组件
3. 应用最小可逆修复
操作脚本
禁用启动应用 — Run 键(HKCU + HKLM + WOW64)scripts/safe-disable-startup.ps1 -Name <pattern>(无需管理员权限;支持通配符)
禁用启动文件夹快捷方式scripts/safe-disable-startup.ps1 -Name '*.lnk'(通过同一脚本的 StartupFolder 变体处理)
列出所有启动项的当前状态scripts/safe-disable-startup.ps1 -List
重新启用之前禁用的项目scripts/safe-disable-startup.ps1 -Name <pattern> -Enable
将服务设为 Manual(需管理员权限)Set-Service <name> -StartupType Manual; Stop-Service <name>
禁用计划任务Disable-ScheduledTask -TaskName <name>
复制文件夹树,遇到错误时不会停止scripts/copy-tree.ps1 <src> <dst> — 仅添加文件,每个文件重试一次,并生成易读的失败文件日志;退出代码 10 = 有部分文件复制失败
从出现故障的驱动器安全克隆scripts/copy-tree.ps1 <src> <dst> -Mode Rescue — 使用带有 /R:0 /W:0 /MT:1 参数的 robocopy,避免重试持续冲击坏扇区
镜像文件夹(会删除目标位置中的额外文件)scripts/copy-tree.ps1 <src> <dst> -Mode Mirror — 除非指定 -Force,否则会提示确认
驱动器损坏严重,无法进行文件级复制scripts/rescue-image.ps1 -ListDevices,然后运行 -Device <dev> -Image <path> — 使用 ddrescue,在监督下运行,并通过 mapfile 恢复任务
从救援映像中取回文件scripts/extract-image.ps1 -Image <img> -Plan,然后运行 -Extract -Dest <dir> -Include <pat> — 使用 7-Zip,只读,无需挂载

所有禁用操作都可逆 — StartupApproved 注册表机制只会翻转一个字节;重新启用操作则与之相反。

存储健康状况与故障检测

这是收益最高的单项审计。驱动器故障会导致启动缓慢(Windows 探测驱动器时发生超时)、系统不稳定(控制器重置会连锁导致内核挂起)和崩溃(I/O 故障会使关键进程终止)。需要交叉核对三个独立数据源:

磁盘事件 7(坏块)和 154(硬件错误)属于高严重性 ID:一个月内即使只有 10 次,也是强烈的故障信号;出现数百次则意味着应立即更换。storahci 事件 129(控制器重置):健康状态下应为零,一个月超过 5 次则表示正在发生故障。\Device\HarddiskN 中的 N 对应 Get-Disk 的磁盘编号。scripts/disk-health.ps1 会运行这三项检查;手动查询、事件目录和 SMART 备用方案见:references/manual-queries.md。

启动性能与启动项管理

Windows 有 五种独立的启动机制,每种都需要使用不同的工具。任务管理器只会显示其中两种。完整清单见 references/startup-mechanisms.md。

机制位置检查方式禁用方式
注册表 Run 键HKCU/HKLM\...\Run(+ WOW6432)Get-ItemPropertyStartupApproved 二进制标志
服务Service Control ManagerGet-ServiceSet-Service -StartupType Manual(需管理员权限)
登录时运行的计划任务Task SchedulerGet-ScheduledTaskDisable-ScheduledTask
启动文件夹快捷方式%APPDATA%\...\Startup\ + AllUsersGet-ChildItem删除或重命名 .lnk
Group Policy 启动脚本HKLM\...\Policies\ScriptsGroup Policy Editor / gpresult(工作站上很少见)

任务管理器中的“禁用”会在 HKCU 下写入一个 12 字节的 StartupApproved 标志(0x02 表示已启用,0x03 表示已禁用),因此非管理员用户也可以为自己禁用 HKLM 项;scripts/safe-disable-startup.ps1 可执行此操作。启动耗时记录在仅管理员可访问的 Diagnostics-Performance 日志中(scripts/boot-perf.ps1 会回退到内核事件):健康 SSD 登录耗时为 15–25 秒,存储故障时则为 60 秒或更久。详情见:references/manual-queries.md。

崩溃分析与转储排查

事件 41(Kernel-Power)是崩溃记录:Properties[0] 是 BugCheck 代码(0x0 = 未记录,因此属于突然断电或卡死),非零的索引 6 表示电源按钮被按住。崩溃前的 10 分钟能说明情况:storahci 129 → 存储故障级联,GPU 驱动警告 → 驱动卡死,WHEA → 硬件故障,没有记录 → 完全卡死(scripts/crash-triage.ps1 -CrashTime …)。崩溃后没有转储文件 → 检查 CrashControl\CrashDumpEnabled 和页面文件大小。布局和解码表:references/manual-queries.md;停止代码:references/bugcheck-codes.md。

失控进程排查

关注稳定运行期间,而不是启动时——有东西正在此刻占用机器。 整个排查过程的关键只有一点:测量速率,而不是追溯来源。

累计 CPU 使用量只能告诉你某个进程曾经做过什么。孤儿进程扫描会告诉你它的父进程是否已退出。两者都找不到最耗资源的情况——进程卡住,但其监督进程正常运行;它占满一个核心附近的 CPU,却没有任何产出。

scripts/process-triage.ps1                                 # sample all, flag >=20% of a core
scripts/process-triage.ps1 -Name claude,node -Threshold 50 # hunt agent/editor spinners
scripts/process-triage.ps1 -Json | ConvertFrom-Json        # machine-readable findings
scripts/process-triage.ps1 -Tree 35736                     # what a kill takes, leaves-first

退出码 10 = 发现问题,0 = 正常。在一个时间窗口内采集两次 CPU 样本,显示单核占用百分比,以及专用提交量、运行时长和孤儿状态。它绝不会终止任何进程——-Tree 会输出有序列表,由调用方谨慎处理。

关键防护。 脚本会在报告前解析当前会话自身的进程祖先链——shell → Agent 主机 → 应用程序,并将每一环标记为 protected=True。终止其中任何一个进程都会结束正在进行调查的会话,因此绝不能让它们与候选进程无法区分。手动操作时,意味着在查看其他任何内容之前,先通过 ParentProcessId 沿 PID 向上追溯自身进程链。

然后按从叶节点开始的顺序终止:先终止最深层的后代,再终止其监督进程,以免仍在运行的父进程重新创建已清理的子进程。后续条目报告“已不存在”表示级联清理正常运行,并非错误。终止进程不会删除文件——其目录中的未提交工作会原样保留。

报告提交量,而非 RAM。 Windows 会先耗尽提交量(RAM + 页面文件保证额度,Win32_OperatingSystem.FreeVirtualMemory),再耗尽物理内存,因此即使机器还有可用 RAM,也可能无法启动任何程序。报告进程数、专用提交量和机器可用提交量的前后变化——释放提交量通常比所终止进程的提交量总和更能恢复系统资源。

有关三类故障、排查流程、Electron/Agent 主机拓扑、过时构建检测以及工作树拆除情况的详细信息,请参阅references/process-triage.md。

事件日志查询模式

使用 Get-WinEvent -FilterHashtable 进行筛选(速度远快于 Where-Object);可用键:references/manual-queries.md。

常见故障模式

症状首要检查项常见原因
映射驱动器显示 Disconnected / UNC 路径无法访问这是网络映射吗?Get-SmbMapping交由 net-ops 处理——并非本地存储故障
启动缓慢,以前很快boot-perf.ps1,然后检查 health-audit.ps1 的启动部分冗余内容累积(Docker、Adobe CC、Electron 应用)
启动缓慢,且越来越严重disk-health.ps1驱动器故障——Windows 一直等待探测超时
随机冻结并强制重启disk-health.ps1 + crash-triage.ps1storahci 重置级联导致内核卡死
从睡眠状态唤醒时出现 BSODcrash-triage.ps1(BugCheck 0x9F)驱动电源状态故障(通常是 GPU、USB)
出现 BSOD 前有 WHEA 记录crash-triage.ps1(BugCheck 0x124)硬件故障——RAM、CPU、PCIe 通道
系统迟缓但没有崩溃health-audit.ps1 性能部分后台进程堆积
登录需要几分钟boot-perf.ps1(启动后耗时),然后运行 safe-disable-startup.ps1 -List启动项缓慢,并同步阻塞 shell

恢复模式

从故障硬盘克隆

切勿在故障硬盘上运行 chkdsk /f——修复操作会向坏扇区写入数据,可能彻底损坏硬盘。先创建映像,再修复映像。

# Healthy-side clone with no retries (fast, skips bad sectors)
robocopy "Y:\important" "Z:\backup\important" /MIR /R:0 /W:0 /XJ /NDL /LOG:clone.log

若要从存在大量坏扇区的硬盘中恢复位级数据,请使用 ddrescue(通过 WSL 或 Linux Live USB),并使用映射文件,以便中断后继续操作。相关说明见 references/storage-events.md。

物理断开故障硬盘

如果硬盘导致启动卡顿或崩溃:

  1. 通过 disk-health.ps1 找到该硬盘
  2. 确认没有关键内容依赖它(scripts/disk-health.ps1 -CheckDependencies <drive-letter>)
  3. 物理拔下 SATA 线,或在 BIOS 中禁用,或在 diskpart 中将其设为脱机
  4. 重启——启动时间应会显著缩短,控制器重置也应停止

语气与输出风格

输出遵循 claude-mods 的诊断规范:

  • 扫描结果行使用 [PASS] / [FAIL] / [WARN] / [INFO] 前缀
  • 在底部提供结论块,列出具体发现和建议操作
  • 硬盘标识信息包括物理磁盘编号、型号、容量和盘符
  • 崩溃引用包括 UTC 时间戳、BugCheck 代码、主要参数和疑似原因
  • 不使用营销用语,脚本中不使用表情符号(适合时可在 SKILL.md 文案中使用)

本技能不涵盖的内容

  • 网络诊断,包括任何看似存储相关、但实际位于网络上的问题 → 使用 net-ops。具体包括:映射的网络驱动器、映射卡在 Disconnected / Unavailable 状态、无法打开的 UNC 路径(\\server\share)、SMB 本身、NAS 或 Synology 设备、net use 故障,以及共享文件夹上的“拒绝访问”。盘符并不意味着它是本地驱动器。
  • 应用性能分析(火焰图、py-spy/pprof、负载测试、慢查询)→ 使用 perf-ops。两者的分工是:windows-ops 对工作站进行分诊——找出哪个进程在消耗系统资源,以及是否可以安全终止;perf-ops 则分析你正在优化的程序内部性能。
  • 源代码级调试 → 使用 debug-ops
  • 使用 WinDbg 分析内核转储文件——此主题过于专业,不属于本技能范围;这里只提供参考文档指引
  • 组策略诊断——企业环境中相关,但在工作站上较少见
  • WSL 发行版内部问题(Linux 软件包、服务、Linux 应用自身的故障)——请使用 Linux 侧技能。WSL 本身的问题(配置、网络模式、磁盘)属于本技能范围:references/wsl.md

交叉参考

情况使用
故障“硬盘”是网络映射或 NAS 共享(SMB、UNC、Disconnected)由 net-ops 负责——使用 scripts/windows/smb-audit.ps1 处理映射及 SMB/LAN 排查流程
需要对远程 Windows 设备进行分诊可直接套用 net-ops 的反向探测模式
崩溃与网络有关结合使用 net-ops,排查 DNS / VPN 驱动问题
多台计算机出现相同情况在每台计算机上运行 health-audit.ps1,然后比较输出
被标记的转圈图标指向一个已不存在的 git worktreeworktree 生命周期由 fleet-ops 负责——拆除顺序的隐患
需要分析应用内部性能,而不是对整台设备进行分诊perf-ops
WSL:.wslconfig 未生效、NAT 与镜像网络模式、Hyper-V 防火墙、发行版磁盘只增不减references/wsl.md;Docker Desktop 的引擎及其 WSL 数据磁盘 → docker-ops

参考资料

  • references/storage-events.md — 磁盘和控制器事件 ID、故障阈值
  • references/bugcheck-codes.md — BSOD 停止代码及其可能原因
  • references/startup-mechanisms.md — 五种启动机制、厂商自动启动钩子
  • references/recovery-patterns.md — 数据恢复、chkdsk 决策树、BCD 和无法启动时的修复;进行任何破坏性操作前先加载
  • references/uac-attribution.md — 当时及事后如何查明是谁请求了管理员权限
  • references/process-triage.md — 转圈、孤儿进程、占用资源的进程;安全终止顺序
  • references/remote-diagnostics.md — 如何对远程计算机运行此技能
  • references/symptom-guide.md — 按问题分类的症状与信号
  • references/manual-queries.md — 脚本自动执行的查询和解码表
  • references/worked-example.md — 一个故障硬盘案例的完整处理过程
  • references/wsl.md — WSL 2:.wslconfig 和 wsl.conf、网络模式、Hyper-V 防火墙、DNS、/mnt/c 速度、发行版磁盘(调整大小、稀疏、压缩)

何时加载每份资料的完整说明:references/reference-index.md。

完整示例

对一台启动缓慢且频繁崩溃的 PC,依次运行 health-audit.ps1、disk-health.ps1 和 drive-dependencies.ps1 面板,然后进入修复循环。每个脚本都支持 -Json(供 jq 使用)和 -Verbose,通过管道传输时会省略面板装饰。面板和完整命令序列:references/worked-example.md。

评论

支持 Markdown