{"id":"028fc8d4-61df-476c-ad43-11dfcc77c218","entityType":"agent","slug":"clawhub-fyniujin-winskill","name":"winskill","canonicalUrl":"https://www.xpersona.co/agent/clawhub-fyniujin-winskill","canonicalPath":"/agent/clawhub-fyniujin-winskill","generatedAt":"2026-10-10T10:43:36.851Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T07:34:50.694Z","emptyReason":null},"description":"Windows 服务器运维工具箱 - 磁盘体检（统一入口）、临时文件清理、IIS 站点管理、批量文件操作、服务状态监控、Windows Update 诊断、实时性能监控、安全审计、注册表启动项审计、磁盘健康检测、网络端口监控、事件日志诊断、已安装程序管理、用户会话监控、计划任务审计、文件共享审计、DNS网卡诊断、SSL证书过期检测、防火墙规则审计、服务崩溃恢复状态、系统文件修复、存储池管理、备份状态检查、Docker容器管理、K8s集群监控、自动化修复向导、性能基线与趋势分析、等保合规检查清单、远程多服务器管理、日志轮转、模块索引、轻量常驻监控、趋势预测、告警推送、模糊重复检测、三级清理建议。只读分析+安全确认，绝不误删文件，完全免费离线运行。 Skill: winskill Owner: fyniujin Summary: Windows 服务器运维工具箱 - 磁盘体检（统一入口）、临时文件清理、IIS 站点管理、批量文件操作、服务状态监控、Windows Update 诊断、实时性能监控、安全审计、注册表启动项审计、磁盘健康检测、网络端口监控、事件日志诊断、已安装程序管理、用户会话监控、计划任务审计、文件共享审计、DNS网卡诊断、SSL证书过期检测、防火墙规则审计、服务崩溃恢复状态、系统文件修复、存储池管理、备份状态检查、Docker容器管理、K8s集群监控、自动化修复向导、性能基线与趋势分析、等保合规检查清单、远程多服务器管理、日志轮转、模块索引、轻量常驻监控、趋势预测、告警推送、模糊重复检测、三级清理建议。只读分析+安全确认，绝不误删文件，完全免费离线运行。 Tags: latest:3.4.0 Version history: v3.4.0 | 2026-10","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.6K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s177r8w7p1d7cpbys9bn33kwhs89d0xw:winskill","sourceUrl":"https://clawhub.ai/fyniujin/winskill","homepage":"https://clawhub.ai/fyniujin/skills/winskill","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/fyniujin/winskill","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/fyniujin/skills/winskill","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Windows 服务器运维工具箱 - 磁盘体检（统一入口）、临时文件清理、IIS 站点管理、批量文件操作、服务状态监控、Windows Update 诊断、实时性能监控、安全审计、注册表启动项审计、磁盘健康检测、网络端口监控、事件日志诊断、已安装程序管理、用户会话监控、计划任务审计、文件共享审计、DNS网卡诊断、SSL"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T07:34:50.694Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T07:34:50.694Z","emptyReason":null},"stars":null,"forks":null,"downloads":1587,"packageName":null,"latestVersion":"3.4.0","tractionLabel":"1.6K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T07:34:50.694Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T07:34:50.694Z","lastCrawledAt":"2026-10-10T07:34:50.694Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T07:34:50.694Z","lastVerifiedAt":null,"highlights":[{"version":"3.4.0","createdAt":"2026-10-09T02:52:56.371Z","changelog":"winskill 3.4.0 - 新增“磁盘体检”统一入口（模块34），整合磁盘空间分析、重复检测、目录统计等功能，统一入口一键体检。 - 增加模糊重复检测（精确哈希+文件名相似度+大小近似，阈值可配置）。 - 清理建议支持三级分类（可安全删除/需人工确认/严禁操作），对齐实际安全分级。 - 支持生成磁盘体检HTML报告，所有核心逻辑支持单文件离线运行。 - 模块1/2/7保留，功能转发至新体检入口，兼容老脚本调用。 - 移除旧脚本与说明文件，补充新功能文档。","fileCount":40,"zipByteSize":103131},{"version":"3.3.0","createdAt":"2026-09-11T13:42:52.722Z","changelog":"增加：33个模块总览索引；新增轻量常驻监控模块；新增趋势预测与告警推送模块","fileCount":40,"zipByteSize":96911},{"version":"3.2.0","createdAt":"2026-08-24T07:06:35.323Z","changelog":"Winskill 3.2.0 delivers a major structural upgrade with granular module management and enhanced compliance functionality. - 所有 30 个模块的 PowerShell 脚本正式分离，目录化存放于 references/modules/*.md，主 SKILL.md 仅保留模块索引与导航。 - 新增等保 2.0/CIS Benchmark 合规清单文件（references/compliance/*.yaml），可版本化和扩展。 - 引入脚本化目录生成（scripts/build-index.ps1），提升导航和可维护性。 - 新增一键巡检与修复向导：支持多模块串联检查，自动聚合成 HTML 巡检报告，并可连接修复流程。 - skill-card.md 移除，全部模块文档化统一管理。","fileCount":36,"zipByteSize":87114},{"version":"3.1.0","createdAt":"2026-08-16T10:30:14.344Z","changelog":"- 新增日志轮转功能，自动分割并清理 7 天前的日志，日志路径调整为 `~\\.workbuddy\\output\\winskill\\winskill.log` - 增加“模块索引”一键列出全部 30 个模块及用途，便于快速总览和检索功能 - skill-card.md 文件已移除（原快速模块总览已合并进主文档） - SKILL.md 现支持更完整的模块导航与分组，描述和示例更新 - 描述字段中增加“日志轮转、模块索引”关键词，反映新特性","fileCount":3,"zipByteSize":50995},{"version":"3.0.0","createdAt":"2026-08-06T03:12:44.464Z","changelog":"**winskill 3.0.0** — 主要功能结构升级，模块扩展30项，文档组织优化。 - 功能模块由原来的列表化文档扩展为30个细分模块，新增导航索引和跳转。 - 新增性能基线与趋势分析、等保/安全合规检查、远程多服务器管理等高级功能说明。 - 技能描述更新，覆盖更多Windows运维和安全合规场景。 - 删除 skill-card.md，改以 SKILL.md 作为唯一文档说明入口。 - 所有模块结构更清晰，用户查找和跳转更方便。","fileCount":3,"zipByteSize":50116},{"version":"2.0.0","createdAt":"2026-07-24T07:56:25.350Z","changelog":"winskill 2.0.0 - 新增“自动化修复向导”至技能描述，为工具箱带来更多自动诊断和修复能力。 - skill-card.md 已删除，不再单独维护技能卡片。 - 其它内容保持不变，全面兼容原有用法。","fileCount":3,"zipByteSize":39120},{"version":"1.9.0","createdAt":"2026-07-16T13:29:03.660Z","changelog":"- Bumped version to 1.9.0 in SKILL.md. - No other content changes; documentation and features remain unchanged.","fileCount":3,"zipByteSize":35093},{"version":"1.8.0","createdAt":"2026-07-16T12:36:37.118Z","changelog":"- 新增功能模块：支持 Docker 容器管理与 K8s 集群监控。 - skill-card.md 文件移除。 - 工具箱描述中增加 Docker 和 K8s 相关功能提示。 - 版本号更新至 1.8.0。","fileCount":3,"zipByteSize":35186}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s177r8w7p1d7cpbys9bn33kwhs89d0xw:winskill","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fyniujin-winskill/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fyniujin-winskill/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fyniujin-winskill/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-fyniujin-winskill/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-fyniujin-winskill/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-fyniujin-winskill/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T10:43:36.847Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fyniujin-winskill/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fyniujin-winskill/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fyniujin-winskill/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-fyniujin-winskill/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T07:34:50.694Z","emptyReason":null},"readme":"Skill: winskill\n\nOwner: fyniujin\n\nSummary: Windows 服务器运维工具箱 - 磁盘体检（统一入口）、临时文件清理、IIS 站点管理、批量文件操作、服务状态监控、Windows Update 诊断、实时性能监控、安全审计、注册表启动项审计、磁盘健康检测、网络端口监控、事件日志诊断、已安装程序管理、用户会话监控、计划任务审计、文件共享审计、DNS网卡诊断、SSL证书过期检测、防火墙规则审计、服务崩溃恢复状态、系统文件修复、存储池管理、备份状态检查、Docker容器管理、K8s集群监控、自动化修复向导、性能基线与趋势分析、等保合规检查清单、远程多服务器管理、日志轮转、模块索引、轻量常驻监控、趋势预测、告警推送、模糊重复检测、三级清理建议。只读分析+安全确认，绝不误删文件，完全免费离线运行。\n\nTags: latest:3.4.0\n\nVersion history:\n\nv3.4.0 | 2026-10-09T02:52:56.371Z | auto\n\nwinskill 3.4.0\n\n- 新增“磁盘体检”统一入口（模块34），整合磁盘空间分析、重复检测、目录统计等功能，统一入口一键体检。\n- 增加模糊重复检测（精确哈希+文件名相似度+大小近似，阈值可配置）。\n- 清理建议支持三级分类（可安全删除/需人工确认/严禁操作），对齐实际安全分级。\n- 支持生成磁盘体检HTML报告，所有核心逻辑支持单文件离线运行。\n- 模块1/2/7保留，功能转发至新体检入口，兼容老脚本调用。\n- 移除旧脚本与说明文件，补充新功能文档。\n\nv3.3.0 | 2026-09-11T13:42:52.722Z | user\n\n增加：33个模块总览索引；新增轻量常驻监控模块；新增趋势预测与告警推送模块\n\nv3.2.0 | 2026-08-24T07:06:35.323Z | auto\n\nWinskill 3.2.0 delivers a major structural upgrade with granular module management and enhanced compliance functionality.\n\n- 所有 30 个模块的 PowerShell 脚本正式分离，目录化存放于 references/modules/*.md，主 SKILL.md 仅保留模块索引与导航。\n- 新增等保 2.0/CIS Benchmark 合规清单文件（references/compliance/*.yaml），可版本化和扩展。\n- 引入脚本化目录生成（scripts/build-index.ps1），提升导航和可维护性。\n- 新增一键巡检与修复向导：支持多模块串联检查，自动聚合成 HTML 巡检报告，并可连接修复流程。\n- skill-card.md 移除，全部模块文档化统一管理。\n\nv3.1.0 | 2026-08-16T10:30:14.344Z | auto\n\n- 新增日志轮转功能，自动分割并清理 7 天前的日志，日志路径调整为 `~\\.workbuddy\\output\\winskill\\winskill.log`\n- 增加“模块索引”一键列出全部 30 个模块及用途，便于快速总览和检索功能\n- skill-card.md 文件已移除（原快速模块总览已合并进主文档）\n- SKILL.md 现支持更完整的模块导航与分组，描述和示例更新\n- 描述字段中增加“日志轮转、模块索引”关键词，反映新特性\n\nv3.0.0 | 2026-08-06T03:12:44.464Z | auto\n\n**winskill 3.0.0** — 主要功能结构升级，模块扩展30项，文档组织优化。\n\n- 功能模块由原来的列表化文档扩展为30个细分模块，新增导航索引和跳转。\n- 新增性能基线与趋势分析、等保/安全合规检查、远程多服务器管理等高级功能说明。\n- 技能描述更新，覆盖更多Windows运维和安全合规场景。\n- 删除 skill-card.md，改以 SKILL.md 作为唯一文档说明入口。\n- 所有模块结构更清晰，用户查找和跳转更方便。\n\nv2.0.0 | 2026-07-24T07:56:25.350Z | auto\n\nwinskill 2.0.0\n\n- 新增“自动化修复向导”至技能描述，为工具箱带来更多自动诊断和修复能力。\n- skill-card.md 已删除，不再单独维护技能卡片。\n- 其它内容保持不变，全面兼容原有用法。\n\nv1.9.0 | 2026-07-16T13:29:03.660Z | auto\n\n- Bumped version to 1.9.0 in SKILL.md.\n- No other content changes; documentation and features remain unchanged.\n\nv1.8.0 | 2026-07-16T12:36:37.118Z | auto\n\n- 新增功能模块：支持 Docker 容器管理与 K8s 集群监控。\n- skill-card.md 文件移除。\n- 工具箱描述中增加 Docker 和 K8s 相关功能提示。\n- 版本号更新至 1.8.0。\n\nv1.7.0 | 2026-07-10T07:02:02.849Z | auto\n\n- Expanded toolbox features: 新增系统文件修复、存储池管理、备份状态检查等模块描述到简介。\n- 更新 SKILL.md 文件，精简内容排版，采用折叠/展开模块，结构更清晰。\n- 删除 skill-card.md 文件，简化文档。\n- 无API或依赖更新，核心操作与安全逻辑保持一致。\n\nv1.6.1 | 2026-07-07T23:16:31.151Z | user\n\nupdated via tongyifabu\n\nv1.6.0 | 2026-07-02T11:15:35.178Z | user\n\nUpdated via tongyifabu\n\nv1.5.0 | 2026-06-30T13:00:22.867Z | user\n\nv1.5.0: 新增计划任务/文件共享/DNS诊断 3 个模块，共 19 模块\n\nv1.4.0 | 2026-06-28T11:33:41.852Z | user\n\nv1.4.0 - 新增 事件日志诊断（最近 2 小时错误/警告、蓝屏/重启关键事件、应用错误、Setup 日志）；新增 已安装程序与补丁管理（安装清单、补丁列表、安装时间线、补丁一致性检测）；新增 用户会话与登录状态监控（当前登录用户、RDP 会话、异常登录检测、账户状态审计）；总计 16 个模块；移除 skillhub 特有字段（slug, displayName, category, platforms, tags, description_zh, requires_api_key）和 skillhub.cn 跟踪评测链接；FAQ Q7 升级命令改为 clawhub update\n\nv1.3.0 | 2026-06-27T07:26:23.124Z | user\n\nv1.3.0 - 新增注册表启动项审计、磁盘健康检测、网络端口监控 3 个模块，安全声明增加注册表保护\n\nv1.2.0 | 2026-06-26T04:47:43.142Z | user\n\nInitial ClawHub release: v1.2.0 - Windows 运维工具箱，从 skillhub 迁移至 clawhub\n\nArchive index:\n\nArchive v3.4.0: 40 files, 103131 bytes\n\nFiles: references/compliance/cis-benchmark.yaml (1842b), references/compliance/dp-2.0.yaml (2525b), references/modules/module-01-磁盘空间分析.md (1511b), references/modules/module-02-大文件重复检测.md (1698b), references/modules/module-03-临时文件安全清理.md (3040b), references/modules/module-04-IIS-站点管理.md (2010b), references/modules/module-05-服务状态监控.md (1765b), references/modules/module-06-批量文件操作.md (1824b), references/modules/module-07-目录磁盘使用报告.md (1498b), references/modules/module-08-Windows-Update-服务状态与缓存管理.md (3076b), references/modules/module-09-实时性能监控与进程资源分析.md (3379b), references/modules/module-10-安全审计与日志分析.md (3521b), references/modules/module-11-注册表与启动项安全审计.md (4745b), references/modules/module-12-磁盘健康状态检测.md (4014b), references/modules/module-13-网络连接与端口监控.md (3909b), references/modules/module-14-Windows-事件日志诊断.md (4325b), references/modules/module-15-已安装程序与补丁管理.md (4020b), references/modules/module-16-用户会话与登录状态监控.md (4988b), references/modules/module-17-计划任务审计.md (6846b), references/modules/module-18-文件共享与-SMB-审计.md (5986b), references/modules/module-19-DNS-解析与网卡诊断.md (6234b), references/modules/module-20-SSL-证书过期检测.md (7053b), references/modules/module-21-Windows-防火墙规则审计.md (6479b), references/modules/module-22-关键服务崩溃与自动恢复状态.md (6159b), references/modules/module-23-系统文件完整性检查与修复（SFC---DISM）.md (2606b), references/modules/module-24-存储池与虚拟磁盘管理（Storage-Spaces）.md (3973b), references/modules/module-25-Windows-Server-Backup-状态检查.md (4480b), references/modules/module-26-Docker---K8s-容器管理.md (12585b), references/modules/module-27-自动化修复向导.md (24281b), references/modules/module-28-性能基线-&-趋势分析.md (13458b), references/modules/module-29-安全合规检查清单.md (17269b), references/modules/module-30-远程多服务器管理.md (17154b), references/modules/module-31-轻量常驻监控.md (8658b), references/modules/module-32-趋势预测.md (4332b), references/modules/module-33-告警推送.md (3489b), references/modules/module-34-磁盘体检.md (23146b), references/thresholds.yaml (1055b), skill-card.md (2156b), SKILL.md (12970b), _meta.json (127b)\n\nFile v3.4.0:SKILL.md\n\n---\nname: winskill\ndescription: \"Windows 服务器运维工具箱 - 磁盘体检（统一入口）、临时文件清理、IIS 站点管理、批量文件操作、服务状态监控、Windows Update 诊断、实时性能监控、安全审计、注册表启动项审计、磁盘健康检测、网络端口监控、事件日志诊断、已安装程序管理、用户会话监控、计划任务审计、文件共享审计、DNS网卡诊断、SSL证书过期检测、防火墙规则审计、服务崩溃恢复状态、系统文件修复、存储池管理、备份状态检查、Docker容器管理、K8s集群监控、自动化修复向导、性能基线与趋势分析、等保合规检查清单、远程多服务器管理、日志轮转、模块索引、轻量常驻监控、趋势预测、告警推送、模糊重复检测、三级清理建议。只读分析+安全确认，绝不误删文件，完全免费离线运行。\"\nversion: 3.4.0\n---\n\n\n# Winskill — Windows 服务器运维工具箱\n\n## 快速开始\n\n**直接对 AI 说就行，不用记命令。**\n\n| 你想做什么 | 直接对 AI 说 |\n|-----------|-------------|\n| 看磁盘空间 | `\"帮我扫一下 D 盘大文件\"` |\n| 磁盘体检（推荐） | `\"帮我看看磁盘\"` |\n| 清理临时文件 | `\"看看我电脑的临时文件\"` |\n| 检查 IIS | `\"我的 IIS 站点还活着吗？\"` |\n| 检测重复文件 | `\"帮我找下重复文件\"` |\n| 检查服务状态 | `\"看下数据库和 IIS 服务有没有挂\"` |\n| Windows Update 状态 | `\"Windows Update 正常吗？有积压补丁吗？\"` |\n| 服务器卡顿定位 | `\"服务器变卡了，帮我看看是什么原因\"` |\n| 检查有没有被入侵 | `\"帮我查一下有没有异常登录\"` |\n| 检查可疑启动项 | `\"有没有可疑的自启动程序\"` |\n| 磁盘健康状态 | `\"硬盘还健康吗？有没有坏道\"` |\n| 网络连接监控 | `\"谁在连我的服务器\"` |\n| 系统日志哪里错了 | `\"系统日志有没有最近的错误\"` |\n| 服务器装了什么程序 | `\"看看系统安装了哪些软件\"` |\n| 谁在服务器上 | `\"当前有谁登录了服务器\"` |\n| 检查计划任务 | `\"有没有可疑的计划任务\"` |\n| 文件共享审计 | `\"有哪些共享文件夹，权限安全吗\"` |\n| DNS / 网卡诊断 | `\"DNS 解析正常吗\"` |\n| 搞不定了 | `\"我遇到报错了，帮我看看\"` |\n\n> ⚠️ **AI 必须遵守**：凡涉及删除、停止服务、修改系统的操作，必须先展示操作清单，等用户明确说\"确认执行\"后才可执行。\n\n---\n\n## 安全声明\n\n| 保护项 | 方式 |\n|-------|------|\n| 系统目录保护 | 绝不操作 `C:\\Windows`、`C:\\Program Files` 等 |\n| 删除必须确认 | 先展示受影响文件，等用户说\"确认清理\"后才执行 |\n| 回收站优先 | 删除用 `Shell.Application` 回收站 API |\n| 只读诊断 | 所有分析命令不修改任何文件/服务/注册表 |\n| 排除保护 | `pagefile.sys`、`hiberfil.sys` 等系统文件不可操作 |\n| 注册表保护 | 注册表分析只读，任何修改需双重确认 |\n| 日志读取保护 | 事件日志只读查看，不修改任何日志记录 |\n\n---\n\n## 功能模块\n\n### 📋 日志记录与轮转\n\n```powershell\nfunction Write-WinskillLog {\n    param([string]$Message)\n    $logDir = \"$env:USERPROFILE\\.workbuddy\\output\\winskill\"\n    $logFile = Join-Path $logDir \"winskill.log\"\n    New-Item -ItemType Directory -Force -Path $logDir | Out-Null\n    $timestamp = Get-Date -Format \"yyyy-MM-dd HH:mm:ss\"\n    \"$timestamp $Message\" | Out-File $logFile -Append -Encoding utf8\n    if (Test-Path $logFile) {\n        $size = (Get-Item $logFile).Length\n        if ($size -gt 10MB) {\n            $timestamp = Get-Date -Format \"yyyyMMddHHmmss\"\n            Move-Item $logFile \"winskill.log.$timestamp\" -Force\n        }\n    }\n    Get-ChildItem $logDir -Filter \"winskill.log.*\" | Where-Object {\n        $_.LastWriteTime -lt (Get-Date).AddDays(-7)\n    } | Remove-Item -Force\n}\n```\n\n### 📋 模块索引（一键列出所有可用操作）\n\n```powershell\nWrite-Host \"`n📋 Winskill 3.4.0 - 模块索引（共 34 个模块）\"\nWrite-Host (\"=\" * 60)\nWrite-Host (\"{0,-25} {1,-35}\" -f \"模块\", \"用途\")\nWrite-Host (\"-\" * 60)\n$modules = @(\n    \"模块 1: 磁盘空间分析 - 扫大文件/目录占用\",\n    \"模块 2: 大文件重复检测 - 找重复文件\",\n    \"模块 3: 临时文件安全清理 - 清理临时文件\",\n    \"模块 4: IIS 站点管理 - IIS 站点/应用池状态\",\n    \"模块 5: 服务状态监控 - Windows 服务状态\",\n    \"模块 6: 批量文件操作 - 批量重命名/移动/复制\",\n    \"模块 7: 目录磁盘使用报告 - 目录大小报告\",\n    \"模块 8: Windows Update 服务状态 - 更新服务/缓存\",\n    \"模块 9: 实时性能监控 - CPU/内存/磁盘/网络\",\n    \"模块 10: 安全审计与日志分析 - 暴力破解/特权操作\",\n    \"模块 11: 注册表与启动项安全审计 - 启动项/WMI\",\n    \"模块 12: 磁盘健康状态检测 - SMART/坏道/温度\",\n    \"模块 13: 网络连接与端口监控 - 连接/端口/防火墙\",\n    \"模块 14: Windows 事件日志诊断 - 系统/应用日志\",\n    \"模块 15: 已安装程序与补丁管理 - 程序/补丁清单\",\n    \"模块 16: 用户会话与登录状态监控 - 会话/登录\",\n    \"模块 17: 计划任务审计 - 计划任务清单\",\n    \"模块 18: 文件共享与 SMB 审计 - 共享/权限\",\n    \"模块 19: DNS 解析与网卡诊断 - DNS/网卡\",\n    \"模块 20: SSL 证书过期检测 - 证书扫描\",\n    \"模块 21: 防火墙规则审计 - 规则/高危检测\",\n    \"模块 22: 关键服务崩溃与自动恢复 - 服务崩溃记录\",\n    \"模块 23: 系统文件完整性检查与修复 - SFC/DISM\",\n    \"模块 24: 存储池与虚拟磁盘管理 - Storage Spaces\",\n    \"模块 25: Windows Server Backup 状态检查 - 备份状态\",\n    \"模块 26: Docker / K8s 容器管理 - 容器/集群\",\n    \"模块 27: 自动化修复向导 - 一键修复常见问题\",\n    \"模块 28: 性能基线 & 趋势分析 - 趋势/告警/预测\",\n    \"模块 29: 安全合规检查清单 - 等保2.0/CIS\",\n    \"模块 30: 远程多服务器管理 - 多机批量管理\",\n    \"模块 31: 轻量常驻监控 - schtasks 定时采样/阈值告警\",\n    \"模块 32: 趋势预测 - P50/P95 基线/SMART 故障预警\",\n    \"模块 33: 告警推送 - 企微/钉钉 webhook 去抖推送\",\n    \"模块 34: 磁盘体检 - 统一入口+模糊重复+三级清理+HTML报告\"\n)\n$modules | ForEach-Object { Write-Host $_ }\nWrite-Host (\"=\" * 60)\nWrite-Host \"直接对 AI 说模块名称或用途即可调用\"\n```\n\n## 📌 模块导航（点击直达，共 34 个模块）\n\n**🖥️ 磁盘管理（5+1）：**\n[模块 34：磁盘体检（统一入口）](#module-34) · [模块 1：磁盘空间分析](#module-1) · [模块 2：大文件重复检测](#module-2) · [模块 7：目录磁盘使用报告](#module-7) · [模块 12：磁盘健康状态检测](#module-12) · [模块 24：存储池与虚拟磁盘管理](#module-24)\n\n**🔒 网络安全（4）：**\n[模块 13：网络连接与端口监控](#module-13) · [模块 19：DNS 解析与网卡诊断](#module-19) · [模块 20：SSL 证书过期检测](#module-20) · [模块 21：Windows 防火墙规则审计](#module-21)\n\n**📊 性能监控（3）：**\n[模块 5：服务状态监控](#module-5) · [模块 9：实时性能监控](#module-9) · [模块 10：安全审计与日志分析](#module-10)\n\n**🔧 基础运维（12）：**\n[模块 3：临时文件安全清理](#module-3) · [模块 4：IIS 站点管理](#module-4) · [模块 6：批量文件操作](#module-6) · [模块 8：Windows Update](#module-8) · [模块 11：注册表审计](#module-11) · [模块 14：事件日志](#module-14) · [模块 15：程序与补丁](#module-15) · [模块 16：用户会话](#module-16) · [模块 17：计划任务](#module-17) · [模块 18：文件共享](#module-18) · [模块 22：服务崩溃](#module-22) · [模块 23：系统文件修复](#module-23) · [模块 25：备份状态](#module-25)\n\n**🚀 高级功能（8）：**\n[模块 26：Docker/K8s](#module-26) · [模块 27：自动化修复向导](#module-27) · [模块 28：性能基线](#module-28) · [模块 29：合规检查](#module-29) · [模块 30：远程多服务器](#module-30) · [模块 31：轻量常驻监控](#module-31) · [模块 32：趋势预测](#module-32) · [模块 33：告警推送](#module-33)\n\n---\n\n## 前置要求\n\n- **PowerShell 版本**：5.1+（Windows 自带，无需安装）\n- **无需 API Key**\n- **无需联网**（除首次安装 IIS 管理工具外）\n- **无需安装任何第三方软件**\n- ⚠️ **管理员权限检测**：部分功能需要管理员权限，AI 会在执行前自动检测并提示\n\n## 更新日志\n\n| v3.4.0 | 2026-10-09 | 新增磁盘体检统一入口（模块34：合并模块1/2/7+模糊重复检测+三级清理建议+HTML报告，单文件离线可开）；新增模糊重复检测（两阶段：精确哈希→文件名SimHash相似度+大小近似，阈值YAML可配）；清理建议三级分类（可安全删🟢/需确认🟡/禁碰🔴，对齐dgngjx三级安全分级）；模块1/2/7保留转发避免脚本失效 |\n| v3.3.0 | 2026-09-11 | 新增轻量常驻监控（模块31：schtasks 定时采样 CPU/内存/磁盘/服务/事件日志写入 metrics.csv，阈值 YAML 可配，超限写入 alerts 表，不做常驻进程）；新增趋势预测（模块32：7 天基线 P50/P95，偏离 P95 输出异常报告，SMART 劣化斜率提前预警磁盘故障）；新增告警推送（模块33：企微/钉钉 webhook，环境变量存 URL，去抖防告警风暴，含主机名/指标/当前值/阈值/建议动作）；新增阈值配置 references/thresholds.yaml |\n| v3.1.0 | 2026-08-16 | 新增日志轮转功能（Write-WinskillLog，10MB/7天自动轮转清理）；新增模块索引命令（一键列出30个模块用途）；改进：移除废弃的 wmic 声明（已全面迁移 CIM cmdlet） |\n| v3.0.0 | 2026-08-06 | 新增性能基线与趋势分析模块（基线建立、异常偏离告警、趋势预测、瓶颈关联分析）、安全合规检查清单模块（等保2.0、CIS Benchmark、合规报告、修复建议）、远程多服务器管理模块（服务器注册、批量命令执行、统一监控面板、配置差异对比），总计30个模块，从单机工具升级为多机管理平台；修改展示方式：顶部模块导航锚点+每模块返回顶部链接 |\n| v2.0.0 | 2026-07-24 | 新增自动化修复向导模块（DNS修复、网络修复、WinUpdate修复、服务修复、磁盘清理、时间同步），总计27个模块，从诊断工具升级为修复工具 |\n| v1.9.0 | 2026-07-16 | 修复逻辑bug，新增 Docker / K8s 容器管理模块（Docker状态总览、容器资源监控、Docker健康检查、K8s集群状态、容器日志采集），总计26个模块，覆盖Windows Server容器化场景 |\n| v1.8.0 | 2026-07-16 | 新增 Docker / K8s 容器管理模块（Docker状态总览、容器资源监控、Docker健康检查、K8s集群状态、容器日志采集），总计26个模块，覆盖Windows Server容器化场景 |\n| v1.7.0 | 2026-07-10 | 新增系统文件完整性检查(SFC/DISM)、存储池管理、备份状态检查3个模块，总计25个模块；每个模块加折叠块；性能硬件自适应优化；新增更新提醒和禁止文件类型声明 |\n| v1.6.0 | 2026-07-09 | 新增SSL证书过期检测、防火墙规则审计、服务崩溃恢复状态3个模块，总计22个模块 |\n| v1.5.0 | 2026-07-08 | 新增计划任务审计、文件共享审计、DNS网卡诊断3个模块，总计19个模块 |\n| v1.4.0 | 2026-07-07 | 新增事件日志诊断、已安装程序管理、用户会话监控3个模块，总计16个模块 |\n| v1.3.0 | 2026-07-06 | 新增注册表启动项审计、磁盘健康检测、网络端口监控3个模块，总计13个模块 |\n| v1.2.0 | 2026-07-05 | 新增Windows Update性能监控、安全审计3个模块，所有命令折叠隐藏 |\n| v1.1.0 | 2026-07-04 | 新增快速开始/报错指引/FAQ |\n| v1.0.0 | 2026-07-03 | 初始版本，7个模块 |\n\n## 发布信息\n\n\n---\n\n## 🔔 更新提醒\n\n如何获取 winskill 最新版本：\n```bash\nclawhub update winskill\n```\n\n当前版本：v3.4.0，如有新版本可用，请执行上述命令升级。\n\n---\n\n## 🚫 禁止的文件类型（全 Skill 生效 + SkillHub 打包排除）\n\n> 以下 5 大类文件类型在所有涉及文件操作的模块中均会被拦截，同时也会被 SkillHub 打包排除规则过滤。\n\n### 1. Windows 可执行 / 批处理脚本\n`.bat` `.cmd` `.ps1` `.vbs` `.exe` `.dll` `.lnk` `.msi`\n\n### 2. Office 二进制文档\n`.docx` `.xlsx` `.pptx` `.doc` `.xls` `.ppt` `.xlsm` `.docm` `.pptm`\n\n### 3. 二进制镜像 / 安装包\n`.iso` `.dmg` `.zip` `.rar` `.7z` `.tar` `.gz` `.apk` `.jar`\n\n### 4. 系统缓存 / 隐藏文件\n`.DS_Store` `.git` 目录 `.env` `.log` `.tmp`\n\n### 5. 其他风险脚本\n`.sh` `.com` `.scr` `.hta` `.reg`\n\nFile v3.4.0:_meta.json\n\n{\n  \"ownerId\": \"kn7chdrwbdhaqkwajcyhtfvjx989ddb1\",\n  \"slug\": \"winskill\",\n  \"version\": \"3.4.0\",\n  \"publishedAt\": 1791514376371\n}\n\nFile v3.4.0:references/compliance/cis-benchmark.yaml\n\n---\nversion: \"1.0.0\"\nupdated: \"2026-08-24\"\nstandard: \"CIS Benchmark\"\ndescription: \"Center for Internet Security - Windows Server 安全基线（精选关键控制项）\"\n---\n\nitems:\n  - id: \"CIS-1.1.1\"\n    category: 密码策略\n    item: 密码最小长度≥14\n    level: Level 1\n    module: module-05\n    check: \"net accounts | Select-String 'Minimum password length'\"\n    expected: \">= 14\"\n\n  - id: \"CIS-1.1.2\"\n    category: 密码策略\n    item: 密码复杂度已启用\n    level: Level 1\n    module: module-05\n    check: \"Get-ItemProperty -Path 'HKLM:\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\Lsa' -Name PasswordComplexity\"\n    expected: \"PasswordComplexity = 1\"\n\n  - id: \"CIS-2.2.1\"\n    category: 账户策略\n    item: Guest 账户已禁用\n    level: Level 1\n    module: module-16\n    check: \"Get-LocalUser -Name 'Guest' | Select-Object Enabled\"\n    expected: \"Enabled = False\"\n\n  - id: \"CIS-2.3.1.1\"\n    category: 登录策略\n    item: 限制空密码登录\n    level: Level 1\n    module: module-16\n    check: \"Get-ItemProperty -Path 'HKLM:\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\Lsa' -Name LimitBlankPasswordUse\"\n    expected: \"LimitBlankPasswordUse = 1\"\n\n  - id: \"CIS-5.1\"\n    category: 系统服务\n    item: Windows Update 服务运行中\n    level: Level 1\n    module: module-08\n    check: \"Get-Service -Name wuauserv | Select-Object Status\"\n    expected: \"Status = Running\"\n\n  - id: \"CIS-9.1\"\n    category: 防火墙\n    item: 所有防火墙配置文件已启用\n    level: Level 1\n    module: module-21\n    check: \"Get-NetFirewallProfile | Select-Object Name, Enabled\"\n    expected: \"全部 Enabled = True\"\n\n  - id: \"CIS-17.1\"\n    category: 审计策略\n    item: 登录事件审计（成功+失败）\n    level: Level 1\n    module: module-10\n    check: \"auditpol /get /subcategory:'Logon'\"\n    expected: \"Success and Failure\"\n\nFile v3.4.0:references/compliance/dp-2.0.yaml\n\n---\nversion: \"1.0.0\"\nupdated: \"2026-08-24\"\nstandard: \"等保 2.0\"\ndescription: \"信息安全技术 网络安全等级保护基本要求（GB/T 22239-2019）\"\n---\n\nitems:\n  - id: \"DP-2.0-001\"\n    category: 密码策略\n    item: 密码最小长度≥8\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Minimum password length'\"\n    expected: \">= 8\"\n\n  - id: \"DP-2.0-002\"\n    category: 密码策略\n    item: 密码最长使用期限≤90天\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Maximum password age'\"\n    expected: \"<= 90 或 Non-never\"\n\n  - id: \"DP-2.0-003\"\n    category: 密码策略\n    item: 密码历史记录≥5\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Password history length'\"\n    expected: \">= 5\"\n\n  - id: \"DP-2.0-004\"\n    category: 账户锁定\n    item: 锁定阈值≤5次\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Lockout threshold'\"\n    expected: \"<= 5 且非 Never\"\n\n  - id: \"DP-2.0-005\"\n    category: 账户锁定\n    item: 锁定时间≥15分钟\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Lockout duration'\"\n    expected: \">= 15 且非 Never\"\n\n  - id: \"DP-2.0-006\"\n    category: 审计日志\n    item: 登录事件审计（成功+失败）\n    level: 必级\n    module: module-10\n    check: \"auditpol /get /subcategory:'Logon'\"\n    expected: \"Success and Failure\"\n\n  - id: \"DP-2.0-007\"\n    category: 审计日志\n    item: 对象访问审计（成功+失败）\n    level: 必级\n    module: module-10\n    check: \"auditpol /get /subcategory:'Object Access'\"\n    expected: \"Success and Failure\"\n\n  - id: \"DP-2.0-008\"\n    category: 防火墙\n    item: 所有配置文件已启用防火墙\n    level: 必级\n    module: module-21\n    check: \"Get-NetFirewallProfile | Select-Object Name, Enabled\"\n    expected: \"全部 Enabled = True\"\n\n  - id: \"DP-2.0-009\"\n    category: 补丁更新\n    item: 最近 30 天内有补丁更新\n    level: 必级\n    module: module-15\n    check: \"Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 1\"\n    expected: \"InstalledOn 距今 <= 30 天\"\n\n  - id: \"DP-2.0-010\"\n    category: 远程桌面\n    item: RDP 网络级身份验证（NLA）\n    level: 必级\n    module: module-16\n    check: \"Get-ItemProperty -Path 'HKLM:\\\\System\\\\CurrentControlSet\\\\Control\\\\Terminal Server\\\\WinStations\\\\RDP-Tcp' -Name UserAuthentication\"\n    expected: \"UserAuthentication = 1\"\n\nFile v3.4.0:references/modules/module-01-磁盘空间分析.md\n\n---\r\nid: module-01\r\nname: 磁盘空间分析\r\ndescription: 扫描指定路径，找出占用空间的大文件和目录。\r\nkeywords: ['扫一下 C 盘大文件', 'D 盘哪个最占空间']\r\npermission: admin\r\nmode: readonly\r\nsubset: disk-management\r\n---\r\n\r\n### 模块 1：磁盘空间分析\r\n\r\n> ⚠️ 此模块已合并到 **模块 34「磁盘体检」**。直接对 AI 说「帮我看看磁盘」即可获取完整报告。本模块代码保留，避免外部脚本失效。\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 1：磁盘空间分析</summary>\r\n\r\n**用途**：扫描指定路径，找出占用空间的大文件和目录。\r\n\r\n**常你说**：`\"扫一下 C 盘大文件\"` / `\"D 盘哪个最占空间\"`\r\n\r\n\r\n\r\n\r\n```powershell\r\n$scanPath = \"C:\\\"   # ← 改成你要扫的盘符或目录\r\n\r\nGet-ChildItem -Path $scanPath -Recurse -File -ErrorAction SilentlyContinue |\r\n    Where-Object { $_.Length -gt 100MB } |\r\n    Sort-Object Length -Descending |\r\n    Select-Object -First 50 @{N='路径';E={$_.FullName}},\r\n        @{N='大小(GB)';E={[math]::Round($_.Length/1GB,2)}},\r\n        @{N='最后修改';E={$_.LastWriteTime}}\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 无（只读）\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Access to the path 'xxx' is denied` | 权限不足 | 管理员身份运行 PowerShell |\r\n| `Could not find a part of the path` | 目录不存在 | 确认路径 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-2\"></a>\n\nFile v3.4.0:references/modules/module-02-大文件重复检测.md\n\n---\r\nid: module-02\r\nname: 大文件重复检测\r\ndescription: 通过 MD5 哈希找出重复文件。\r\nkeywords: ['找找 D 盘有没有重复文件']\r\npermission: user\r\nmode: readonly\r\nsubset: disk-management\r\n---\r\n\r\n### 模块 2：大文件重复检测\r\n\r\n> ⚠️ 此模块已合并到 **模块 34「磁盘体检」**（含模糊重复检测）。直接对 AI 说「帮我看看磁盘」即可获取完整报告。本模块代码保留，避免外部脚本失效。\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 2：大文件重复检测</summary>\r\n\r\n**用途**：通过 MD5 哈希找出重复文件。\r\n\r\n**常你说**：`\"找找 D 盘有没有重复文件\"`\r\n\r\n\r\n\r\n\r\n```powershell\r\n$scanPath = \"D:\\\"   # ← 扫描目标目录\r\n$minSize = 1MB      # ← 只检测大于 1MB 的文件\r\n\r\nGet-ChildItem -Path $scanPath -Recurse -File -ErrorAction SilentlyContinue |\r\n    Where-Object { $_.Length -gt $minSize } |\r\n    ForEach-Object {\r\n        $hash = (Get-FileHash $_.FullName -Algorithm MD5 -ErrorAction SilentlyContinue).Hash\r\n        if ($hash) {\r\n            [PSCustomObject]@{\r\n                路径 = $_.FullName\r\n                哈希 = $hash\r\n                大小MB = [math]::Round($_.Length/1MB,2)\r\n            }\r\n        }\r\n    } |\r\n    Group-Object 哈希 |\r\n    Where-Object { $_.Count -gt 1 } |\r\n    ForEach-Object { $_.Group }\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 无（只读）\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Exception getting file hash` | 文件正在使用 | 跳过 |\r\n| `The specified path is not valid` | 路径格式不对 | 检查路径 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-3\"></a>\n\nFile v3.4.0:references/modules/module-03-临时文件安全清理.md\n\n---\r\nid: module-03\r\nname: 临时文件安全清理\r\ndescription: 扫描安全可删的临时文件，先预览后确认再清理。\r\nkeywords: ['帮我清理临时文件', 'C 盘快满了帮清 temp']\r\npermission: user\r\nmode: confirm\r\nsubset: basic\r\n---\r\n\r\n### 模块 3：临时文件安全清理\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 3：临时文件安全清理</summary>\r\n\r\n**用途**：扫描安全可删的临时文件，先预览后确认再清理。\r\n\r\n**常你说**：`\"帮我清理临时文件\"` / `\"C 盘快满了帮清 temp\"`\r\n\r\n**安全清理路径**：\r\n\r\n| 路径 | 说明 | 安全天数 |\r\n|------|------|---------|\r\n| `%TEMP%\\*` | 用户临时文件 | >7 天 |\r\n| `C:\\Windows\\Temp\\*` | 系统临时文件 | >7 天 |\r\n| `C:\\Windows\\SoftwareDistribution\\Download\\*` | Windows Update 下载缓存 | 任意 |\r\n| `C:\\Windows\\Prefetch\\*` | 程序预取 | >30 天 |\r\n| `IIS Temporary Compressed Files\\*` | IIS 压缩缓存 | >1 天 |\r\n\r\n\r\n\r\n\r\n```powershell\r\n$tempPath = $env:TEMP\r\n$daysOld = 7\r\n$cutoff = (Get-Date).AddDays(-$daysOld)\r\n\r\n$tempFiles = Get-ChildItem -Path $tempPath -Recurse -ErrorAction SilentlyContinue |\r\n    Where-Object { $_.LastWriteTime -lt $cutoff }\r\n\r\nWrite-Host \"═══════════════════════════════════════════\"\r\nWrite-Host \"  📋 扫描结果: $tempPath\"\r\nWrite-Host \"  过期临时文件数: $($tempFiles.Count) 个\"\r\nWrite-Host \"═══════════════════════════════════════════\"\r\n\r\n$tempFiles | Sort-Object Length -Descending |\r\n    Select-Object -First 20 |\r\n    Select-Object @{N='文件路径';E={$_.FullName}},\r\n        @{N='大小(KB)';E={[math]::Round($_.Length/1KB,1)}},\r\n        @{N='最后修改';E={$_.LastWriteTime}} |\r\n    Format-Table -AutoSize\r\n\r\n$totalKB = ($tempFiles | Measure-Object -Property Length -Sum).Sum\r\nWrite-Host \"  预计可释放空间: $([math]::Round($totalKB/1MB,2)) MB\"\r\nWrite-Host \"  ⚠️ 确认删除请说 '确认清理'\"\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n```powershell\r\n# ⚠️ 仅当用户明确说「确认清理」后才执行！\r\nWrite-Host \"  正在移到回收站...\"\r\n$shell = New-Object -ComObject Shell.Application\r\n$rb = $shell.NameSpace(0x0a)\r\n$totalFiles = 0\r\nforeach ($f in $tempFiles) {\r\n    try {\r\n        $rb.MoveHere($f.FullName)\r\n        $totalFiles++\r\n    } catch { }\r\n}\r\nWrite-Host \"  ✅ 已完成！已将 $totalFiles 个文件移到回收站\"\r\nWrite-Host \"  如需彻底删除，请手动清空回收站\"\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟡 中（需确认后删除）\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Cannot find path ... does not exist` | temp 目录下某些路径不存在 | 自动跳过 |\r\n| `Access is denied` | 系统临时文件正在使用中 | 跳过，正常现象 |\r\n| `MoveHere` 失败 | 回收站操作异常 | 手动清或用其他方式 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-4\"></a>\n\nFile v3.4.0:references/modules/module-04-IIS-站点管理.md\n\n---\r\nid: module-04\r\nname: IIS 站点管理\r\ndescription: 查看站点状态、应用池信息、快速重启。\r\nkeywords: ['我的 IIS 站点正常吗？', '重启一下应用池']\r\npermission: admin\r\nmode: readonly\r\nsubset: basic\r\n---\r\n\r\n### 模块 4：IIS 站点管理\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 4：IIS 站点管理</summary>\r\n\r\n**用途**：查看站点状态、应用池信息、快速重启。\r\n\r\n**常你说**：`\"我的 IIS 站点正常吗？\"` / `\"重启一下应用池\"`\r\n\r\n**前置条件**（需管理员权限）：\r\n\r\n\r\n```powershell\r\nif (-not (Get-Module -ListAvailable -Name WebAdministration)) {\r\n    Write-Host \"⚠️ IIS 管理工具未安装，请以管理员运行:\"\r\n    Install-WindowsFeature Web-Mgmt-Tools\r\n}\r\nImport-Module WebAdministration\r\n```\r\n\r\n\r\n\r\n\r\n\r\n```powershell\r\nImport-Module WebAdministration\r\n\r\nWrite-Host \"════════ IIS 站点列表 ════════\"\r\nGet-Website | Select-Object @{N='站点名';E={$_.Name}},\r\n    @{N='状态';E={$_.State}},\r\n    @{N='物理路径';E={$_.PhysicalPath}},\r\n    @{N='应用池';E={$_.ApplicationPool}},\r\n    @{N='绑定';E={$_.Bindings -join ';'}} |\r\n    Format-Table -AutoSize\r\n\r\nWrite-Host \"`n════════ 应用池状态 ════════\"\r\nGet-WebAppPoolState | Select-Object @{N='名';E={$_.Name}}, @{N='状态';E={$_.Value}} |\r\n    Format-Table -AutoSize\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n```powershell\r\n# ⚠️ 仅当用户明确确认后才执行！\r\n# Restart-WebSite -Name \"你的站点名\"\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 查看只读 / 🟡 重启需确认\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Get-Website is not recognized` | IIS 模块未加载 | `Install-WindowsFeature Web-Mgmt-Tools` |\r\n| `Cannot connect to IIS` | W3SVC 服务未启动 | 管理服务 |\r\n| `Could not find WebAdministration` | 未装 IIS 管理工具 | 添加 Web 管理工具 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-5\"></a>\n\nFile v3.4.0:references/modules/module-05-服务状态监控.md\n\n---\r\nid: module-05\r\nname: 服务状态监控\r\ndescription: 一眼看出哪些关键服务挂了。\r\nkeywords: ['检查服务器关键服务', '看下数据库有没有挂']\r\npermission: user\r\nmode: readonly\r\nsubset: performance\r\n---\r\n\r\n### 模块 5：服务状态监控\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 5：服务状态监控</summary>\r\n\r\n**用途**：一眼看出哪些关键服务挂了。\r\n\r\n**常你说**：`\"检查服务器关键服务\"` / `\"看下数据库有没有挂\"`\r\n\r\n\r\n\r\n\r\n```powershell\r\n$criticalServices = @(\r\n    \"W3SVC\",        # IIS\r\n    \"MSSQLSERVER\",  # SQL Server\r\n    \"MySQL80\",      # MySQL\r\n    \"Redis\",        # Redis\r\n    \"Elasticsearch\",# ES\r\n    \"Docker\",       # Docker\r\n    \"Spooler\",      # 打印\r\n    \"TermService\",  # 远程桌面\r\n    \"Nginx\",        # Nginx\r\n    \"Apache\",       # Apache\r\n    \"Tomcat\"        # Tomcat\r\n)\r\n\r\nWrite-Host \"════════ 关键服务状态 ════════\"\r\n$hasStopped = $false\r\nforeach ($svc in $criticalServices) {\r\n    $s = Get-Service -Name $svc -ErrorAction SilentlyContinue\r\n    if ($s) {\r\n        $icon = if ($s.Status -eq 'Running') { '✅' } else { '❌'; $hasStopped = $true }\r\n        Write-Host \"  $icon $($s.DisplayName) [$($s.Status)]\"\r\n    }\r\n}\r\nWrite-Host \"═══════════════════════════════\"\r\nif ($hasStopped) { Write-Host \"  ⚠️ 有服务未运行\" }\r\nelse { Write-Host \"  ✅ 所有检测服务正常\" }\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 无（只读）\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Cannot find any service ...` | 该服务未安装 | 自动跳过 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-6\"></a>\n\nFile v3.4.0:references/modules/module-06-批量文件操作.md\n\n---\r\nid: module-06\r\nname: 批量文件操作\r\ndescription: 先预览规则，再确认执行批量重命名/移动。\r\nkeywords: ['把所有 .log 改成 backup_1.log 格式']\r\npermission: user\r\nmode: confirm\r\nsubset: basic\r\n---\r\n\r\n### 模块 6：批量文件操作\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 6：批量文件操作</summary>\r\n\r\n**用途**：先预览规则，再确认执行批量重命名/移动。\r\n\r\n**常你说**：`\"把所有 .log 改成 backup_1.log 格式\"`\r\n\r\n\r\n\r\n\r\n```powershell\r\n$sourceDir = \"D:\\logs\"    # ← 源目录\r\n$searchFilter = \"*.log\"   # ← 文件筛选\r\n$renamePrefix = \"backup\"  # ← 新文件名前缀\r\n\r\n$files = Get-ChildItem -Path $sourceDir -Filter $searchFilter -File\r\nWrite-Host \"════════ 批量重命名预览 ════════\"\r\nWrite-Host \"  扫描到 $($files.Count) 个 $searchFilter 文件\"\r\n\r\n$i = 1\r\nforeach ($f in $files) {\r\n    Write-Host \"  🔄 $($f.Name) → ${renamePrefix}_${i}${f.Extension}\"\r\n    $i++\r\n}\r\n\r\nWrite-Host \"`n  共 $($files.Count) 个文件将被重命名\"\r\nWrite-Host \"  ⚠️ 确认执行请说 '确认重命名'\"\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n```powershell\r\n# ⚠️ 仅当用户明确说「确认重命名」后才执行！\r\n# $i = 1\r\n# foreach ($f in $files) {\r\n#     $newName = \"${renamePrefix}_${i}${f.Extension}\"\r\n#     Rename-Item -Path $f.FullName -NewName $newName\r\n#     Write-Host \"  ✅ $($f.Name) → $newName\"\r\n#     $i++\r\n# }\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟡 中（需确认）\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Cannot rename because item already exists` | 新文件名已存在 | 加时间戳避免重名 |\r\n| `Access to the path is denied` | 文件锁定 | 关相关程序再试 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-7\"></a>\n\nFile v3.4.0:references/modules/module-07-目录磁盘使用报告.md\n\n---\r\nid: module-07\r\nname: 目录磁盘使用报告\r\ndescription: 用进度条样式一眼看出各目录占用。\r\nkeywords: ['看看各个目录的空间占用']\r\npermission: user\r\nmode: readonly\r\nsubset: disk-management\r\n---\r\n\r\n### 模块 7：目录磁盘使用报告\r\n\r\n> ⚠️ 此模块已合并到 **模块 34「磁盘体检」**。直接对 AI 说「帮我看看磁盘」即可获取完整报告。本模块代码保留，避免外部脚本失效。\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 7：目录磁盘使用报告</summary>\r\n\r\n**用途**：用进度条样式一眼看出各目录占用。\r\n\r\n**常你说**：`\"看看各个目录的空间占用\"`\r\n\r\n\r\n\r\n\r\n```powershell\r\nfunction Get-DirectorySize([string]$Path) {\r\n    (Get-ChildItem -Path $Path -Recurse -File -ErrorAction SilentlyContinue |\r\n     Measure-Object -Property Length -Sum).Sum\r\n}\r\n\r\n$dirs = @(\"C:\\inetpub\", \"C:\\Windows\\Temp\", \"C:\\ProgramData\",\r\n          \"$env:TEMP\", \"C:\\Users\",\r\n          \"C:\\Windows\\SoftwareDistribution\", \"D:\\\")\r\n\r\nforeach ($d in $dirs) {\r\n    if (Test-Path $d) {\r\n        $sizeGB = [math]::Round((Get-DirectorySize $d) / 1GB, 2)\r\n        if ($sizeGB -gt 10)     { $icon = '🔴' }\r\n        elseif ($sizeGB -gt 5) { $icon = '🟡' }\r\n        else                  { $icon = '🟢' }\r\n        Write-Host \"  $icon $d : ${sizeGB} GB\"\r\n    }\r\n}\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 无（只读）\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-8\"></a>\n\nFile v3.4.0:references/modules/module-08-Windows-Update-服务状态与缓存管理.md\n\n---\r\nid: module-08\r\nname: Windows Update 服务状态与缓存管理\r\ndescription: 诊断 Windows Update 是否卡住、查看已安装补丁、清理更新缓存。\r\nkeywords: ['Windows Update 正常吗？', '更新缓存能不能删']\r\npermission: user\r\nmode: readonly\r\nsubset: basic\r\n---\r\n\r\n## 🆕 模块 8：Windows Update 服务状态与缓存管理\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：🆕 模块 8：Windows Update 服务状态与缓存管理</summary>\r\n\r\n**用途**：诊断 Windows Update 是否卡住、查看已安装补丁、清理更新缓存。\r\n\r\n**常你说**：`\"Windows Update 正常吗？\"` / `\"更新缓存能不能删\"`\r\n\r\n### 8.1 查看更新服务状态与已安装补丁（只读）\r\n\r\n\r\n\r\n\r\n```powershell\r\n# 更新服务状态\r\nGet-Service -Name wuauserv |\r\n    Select-Object @{N='服务';E={$_.Name}},\r\n        @{N='状态';E={$_.Status}},\r\n        @{N='启动类型';E={$_.StartType}},\r\n        @{N='账号';E={$_.StartName}}\r\n\r\nWrite-Host \"\"\r\n\r\n# 已安装补丁（最近 10 个）\r\nGet-HotFix | Sort-Object InstalledOn -Descending |\r\n    Select-Object -First 10 @{N='补丁ID';E={$_.HotFixID}},\r\n        @{N='安装日期';E={$_.InstalledOn}}\r\n```\r\n\r\n\r\n\r\n### 8.2 检查 SoftwareDistribution 更新缓存大小\r\n\r\n\r\n\r\n\r\n```powershell\r\n$sd = \"C:\\Windows\\SoftwareDistribution\"\r\nif (Test-Path $sd) {\r\n    $total = (Get-ChildItem -Path $sd -Recurse -ErrorAction SilentlyContinue |\r\n              Measure-Object -Property Length -Sum).Sum\r\n    Write-Host \"  SoftwareDistribution 大小: $([math]::Round($total/1MB,1)) MB\"\r\n\r\n    $dlDir = Join-Path $sd \"Download\"\r\n    if (Test-Path $dlDir) {\r\n        $dlSize = (Get-ChildItem -Path $dlDir -Recurse -ErrorAction SilentlyContinue |\r\n                   Measure-Object -Property Length -Sum).Sum\r\n        Write-Host \"  └─ 下载缓存(Download): $([math]::Round($dlSize/1MB,1)) MB\"\r\n    }\r\n    Write-Host \"  💡 若超过 500MB 可考虑清理（需先停止 wuauserv 服务）\"\r\n} else {\r\n    Write-Host \"  ⚠️ SoftwareDistribution 目录不存在\"\r\n}\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n```powershell\r\n# ⚠️ 仅当用户明确说「确认清理更新缓存」后才执行！\r\n# Stop-Service -Name wuauserv -Force\r\n# Remove-Item -Path \"$sd\\Download\\*\" -Recurse -Force -ErrorAction SilentlyContinue\r\n# Start-Service -Name wuauserv\r\n# Write-Host \"  ✅ 已清理更新下载缓存，Windows Update 将重新下载所需补丁\"\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 查看只读 / 🟡 清理缓存需确认\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `The service ... cannot be stopped` | 服务正在使用 | 稍后重试或重启后清理 |\r\n| `Access is denied` | 部分缓存文件被锁定 | 先停服务再清理 |\r\n\r\n**常见坑 & 解决**：\r\n\r\n| 场景 | 说明 |\r\n|-----|------|\r\n| Windows Update 一直不下载 | 服务挂起，重停重启动可解决 |\r\n| 错误码 0x80070005 | 权限问题，清理缓存可修复 |\r\n| 补丁安装失败 | 清理 Download 缓存后重新检查更新 |\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-9\"></a>\n\nArchive v3.3.0: 40 files, 96911 bytes\n\nFiles: references/compliance/cis-benchmark.yaml (1842b), references/compliance/dp-2.0.yaml (2525b), references/modules/module-01-磁盘空间分析.md (1324b), references/modules/module-02-大文件重复检测.md (1484b), references/modules/module-03-临时文件安全清理.md (3040b), references/modules/module-04-IIS-站点管理.md (2010b), references/modules/module-05-服务状态监控.md (1765b), references/modules/module-06-批量文件操作.md (1824b), references/modules/module-07-目录磁盘使用报告.md (1311b), references/modules/module-08-Windows-Update-服务状态与缓存管理.md (3076b), references/modules/module-09-实时性能监控与进程资源分析.md (3379b), references/modules/module-10-安全审计与日志分析.md (3521b), references/modules/module-11-注册表与启动项安全审计.md (4745b), references/modules/module-12-磁盘健康状态检测.md (4014b), references/modules/module-13-网络连接与端口监控.md (3909b), references/modules/module-14-Windows-事件日志诊断.md (4325b), references/modules/module-15-已安装程序与补丁管理.md (4020b), references/modules/module-16-用户会话与登录状态监控.md (4988b), references/modules/module-17-计划任务审计.md (6846b), references/modules/module-18-文件共享与-SMB-审计.md (5986b), references/modules/module-19-DNS-解析与网卡诊断.md (6234b), references/modules/module-20-SSL-证书过期检测.md (7053b), references/modules/module-21-Windows-防火墙规则审计.md (6479b), references/modules/module-22-关键服务崩溃与自动恢复状态.md (6159b), references/modules/module-23-系统文件完整性检查与修复（SFC---DISM）.md (2606b), references/modules/module-24-存储池与虚拟磁盘管理（Storage-Spaces）.md (3973b), references/modules/module-25-Windows-Server-Backup-状态检查.md (4480b), references/modules/module-26-Docker---K8s-容器管理.md (12585b), references/modules/module-27-自动化修复向导.md (24281b), references/modules/module-28-性能基线-&-趋势分析.md (13458b), references/modules/module-29-安全合规检查清单.md (17269b), references/modules/module-30-远程多服务器管理.md (17154b), references/modules/module-31-轻量常驻监控.md (8658b), references/modules/module-32-趋势预测.md (4332b), references/modules/module-33-告警推送.md (3489b), references/thresholds.yaml (555b), scripts/build-index.ps1 (3893b), skill-card.md (3271b), SKILL.md (13401b), _meta.json (127b)\n\nFile v3.3.0:SKILL.md\n\n---\nname: winskill\nslug: winskill\ndisplayName: \"Windows 服务器运维工具箱\"\ndescription: \"Windows 服务器运维工具箱 - 磁盘分析、临时文件清理、IIS 站点管理、批量文件操作、服务状态监控、Windows Update 诊断、实时性能监控、安全审计、注册表启动项审计、磁盘健康检测、网络端口监控、事件日志诊断、已安装程序管理、用户会话监控、计划任务审计、文件共享审计、DNS网卡诊断、SSL证书过期检测、防火墙规则审计、服务崩溃恢复状态、系统文件修复、存储池管理、备份状态检查、Docker容器管理、K8s集群监控、自动化修复向导、性能基线与趋势分析、等保合规检查清单、远程多服务器管理、日志轮转、模块索引、轻量常驻监控、趋势预测、告警推送。只读分析+安全确认，绝不误删文件，完全免费离线运行。\"\ndescription_zh: \"Windows 服务器运维工具箱 - 磁盘分析、清理、IIS 管理、批量操作、服务监控、更新诊断、性能监控、安全审计、注册表审计、磁盘健康、网络监控、事件日志、程序管理、会话监控、计划任务、共享审计、DNS诊断、SSL证书、防火墙审计、服务崩溃记录、系统修复、存储池、备份检查、Docker容器管理、K8s监控、自动化修复向导、性能基线与趋势分析、等保合规检查清单、远程多服务器管理、日志轮转、模块索引、轻量常驻监控、趋势预测、告警推送。只读+确认模式，零依赖离线运行。\"\nversion: 3.3.0\ncategory: system-administration\nplatforms:\n  - windows\ntags:\n  - windows\n  - sysadmin\n  - disk-cleanup\n  - iis\n  - monitoring\n  - file-management\n  - devops\n  - performance\n  - security\n  - audit\n  - registry\n  - disk-health\n  - network\n  - event-log\n  - software\n  - session\n  - scheduled-tasks\n  - smb-share\n  - dns\n  - ssl-certificate\n  - firewall\n  - service-recovery\nrequires_api_key: false\n---\n\n# Winskill — Windows 服务器运维工具箱\n\n## 快速开始\n\n**直接对 AI 说就行，不用记命令。**\n\n| 你想做什么 | 直接对 AI 说 |\n|-----------|-------------|\n| 看磁盘空间 | `\"帮我扫一下 D 盘大文件\"` |\n| 清理临时文件 | `\"看看我电脑的临时文件\"` |\n| 检查 IIS | `\"我的 IIS 站点还活着吗？\"` |\n| 检测重复文件 | `\"帮我找下重复文件\"` |\n| 检查服务状态 | `\"看下数据库和 IIS 服务有没有挂\"` |\n| Windows Update 状态 | `\"Windows Update 正常吗？有积压补丁吗？\"` |\n| 服务器卡顿定位 | `\"服务器变卡了，帮我看看是什么原因\"` |\n| 检查有没有被入侵 | `\"帮我查一下有没有异常登录\"` |\n| 检查可疑启动项 | `\"有没有可疑的自启动程序\"` |\n| 磁盘健康状态 | `\"硬盘还健康吗？有没有坏道\"` |\n| 网络连接监控 | `\"谁在连我的服务器\"` |\n| 系统日志哪里错了 | `\"系统日志有没有最近的错误\"` |\n| 服务器装了什么程序 | `\"看看系统安装了哪些软件\"` |\n| 谁在服务器上 | `\"当前有谁登录了服务器\"` |\n| 检查计划任务 | `\"有没有可疑的计划任务\"` |\n| 文件共享审计 | `\"有哪些共享文件夹，权限安全吗\"` |\n| DNS / 网卡诊断 | `\"DNS 解析正常吗\"` |\n| 搞不定了 | `\"我遇到报错了，帮我看看\"` |\n\n> ⚠️ **AI 必须遵守**：凡涉及删除、停止服务、修改系统的操作，必须先展示操作清单，等用户明确说\"确认执行\"后才可执行。\n\n---\n\n## 安全声明\n\n| 保护项 | 方式 |\n|-------|------|\n| 系统目录保护 | 绝不操作 `C:\\Windows`、`C:\\Program Files` 等 |\n| 删除必须确认 | 先展示受影响文件，等用户说\"确认清理\"后才执行 |\n| 回收站优先 | 删除用 `Shell.Application` 回收站 API |\n| 只读诊断 | 所有分析命令不修改任何文件/服务/注册表 |\n| 排除保护 | `pagefile.sys`、`hiberfil.sys` 等系统文件不可操作 |\n| 注册表保护 | 注册表分析只读，任何修改需双重确认 |\n| 日志读取保护 | 事件日志只读查看，不修改任何日志记录 |\n\n---\n\n## 功能模块\n\n### 📋 日志记录与轮转\n\n```powershell\nfunction Write-WinskillLog {\n    param([string]$Message)\n    $logDir = \"$env:USERPROFILE\\.workbuddy\\output\\winskill\"\n    $logFile = Join-Path $logDir \"winskill.log\"\n    New-Item -ItemType Directory -Force -Path $logDir | Out-Null\n    $timestamp = Get-Date -Format \"yyyy-MM-dd HH:mm:ss\"\n    \"$timestamp $Message\" | Out-File $logFile -Append -Encoding utf8\n    if (Test-Path $logFile) {\n        $size = (Get-Item $logFile).Length\n        if ($size -gt 10MB) {\n            $timestamp = Get-Date -Format \"yyyyMMddHHmmss\"\n            Move-Item $logFile \"winskill.log.$timestamp\" -Force\n        }\n    }\n    Get-ChildItem $logDir -Filter \"winskill.log.*\" | Where-Object {\n        $_.LastWriteTime -lt (Get-Date).AddDays(-7)\n    } | Remove-Item -Force\n}\n```\n\n### 📋 模块索引（一键列出所有可用操作）\n\n```powershell\nWrite-Host \"`n📋 Winskill 3.3.0 - 模块索引（共 33 个模块）\"\nWrite-Host (\"=\" * 60)\nWrite-Host (\"{0,-25} {1,-35}\" -f \"模块\", \"用途\")\nWrite-Host (\"-\" * 60)\n$modules = @(\n    \"模块 1: 磁盘空间分析 - 扫大文件/目录占用\",\n    \"模块 2: 大文件重复检测 - 找重复文件\",\n    \"模块 3: 临时文件安全清理 - 清理临时文件\",\n    \"模块 4: IIS 站点管理 - IIS 站点/应用池状态\",\n    \"模块 5: 服务状态监控 - Windows 服务状态\",\n    \"模块 6: 批量文件操作 - 批量重命名/移动/复制\",\n    \"模块 7: 目录磁盘使用报告 - 目录大小报告\",\n    \"模块 8: Windows Update 服务状态 - 更新服务/缓存\",\n    \"模块 9: 实时性能监控 - CPU/内存/磁盘/网络\",\n    \"模块 10: 安全审计与日志分析 - 暴力破解/特权操作\",\n    \"模块 11: 注册表与启动项安全审计 - 启动项/WMI\",\n    \"模块 12: 磁盘健康状态检测 - SMART/坏道/温度\",\n    \"模块 13: 网络连接与端口监控 - 连接/端口/防火墙\",\n    \"模块 14: Windows 事件日志诊断 - 系统/应用日志\",\n    \"模块 15: 已安装程序与补丁管理 - 程序/补丁清单\",\n    \"模块 16: 用户会话与登录状态监控 - 会话/登录\",\n    \"模块 17: 计划任务审计 - 计划任务清单\",\n    \"模块 18: 文件共享与 SMB 审计 - 共享/权限\",\n    \"模块 19: DNS 解析与网卡诊断 - DNS/网卡\",\n    \"模块 20: SSL 证书过期检测 - 证书扫描\",\n    \"模块 21: 防火墙规则审计 - 规则/高危检测\",\n    \"模块 22: 关键服务崩溃与自动恢复 - 服务崩溃记录\",\n    \"模块 23: 系统文件完整性检查与修复 - SFC/DISM\",\n    \"模块 24: 存储池与虚拟磁盘管理 - Storage Spaces\",\n    \"模块 25: Windows Server Backup 状态检查 - 备份状态\",\n    \"模块 26: Docker / K8s 容器管理 - 容器/集群\",\n    \"模块 27: 自动化修复向导 - 一键修复常见问题\",\n    \"模块 28: 性能基线 & 趋势分析 - 趋势/告警/预测\",\n    \"模块 29: 安全合规检查清单 - 等保2.0/CIS\",\n    \"模块 30: 远程多服务器管理 - 多机批量管理\",\n    \"模块 31: 轻量常驻监控 - schtasks 定时采样/阈值告警\",\n    \"模块 32: 趋势预测 - P50/P95 基线/SMART 故障预警\",\n    \"模块 33: 告警推送 - 企微/钉钉 webhook 去抖推送\"\n)\n$modules | ForEach-Object { Write-Host $_ }\nWrite-Host (\"=\" * 60)\nWrite-Host \"直接对 AI 说模块名称或用途即可调用\"\n```\n\n## 📌 模块导航（点击直达，共 30 个模块）\n\n**🖥️ 磁盘管理（5）：**\n[模块 1：磁盘空间分析](#module-1) · [模块 2：大文件重复检测](#module-2) · [模块 7：目录磁盘使用报告](#module-7) · [模块 12：磁盘健康状态检测](#module-12) · [模块 24：存储池与虚拟磁盘管理](#module-24)\n\n**🔒 网络安全（4）：**\n[模块 13：网络连接与端口监控](#module-13) · [模块 19：DNS 解析与网卡诊断](#module-19) · [模块 20：SSL 证书过期检测](#module-20) · [模块 21：Windows 防火墙规则审计](#module-21)\n\n**📊 性能监控（3）：**\n[模块 5：服务状态监控](#module-5) · [模块 9：实时性能监控](#module-9) · [模块 10：安全审计与日志分析](#module-10)\n\n**🔧 基础运维（12）：**\n[模块 3：临时文件安全清理](#module-3) · [模块 4：IIS 站点管理](#module-4) · [模块 6：批量文件操作](#module-6) · [模块 8：Windows Update](#module-8) · [模块 11：注册表审计](#module-11) · [模块 14：事件日志](#module-14) · [模块 15：程序与补丁](#module-15) · [模块 16：用户会话](#module-16) · [模块 17：计划任务](#module-17) · [模块 18：文件共享](#module-18) · [模块 22：服务崩溃](#module-22) · [模块 23：系统文件修复](#module-23) · [模块 25：备份状态](#module-25)\n\n**🚀 高级功能（8）：**\n[模块 26：Docker/K8s](#module-26) · [模块 27：自动化修复向导](#module-27) · [模块 28：性能基线](#module-28) · [模块 29：合规检查](#module-29) · [模块 30：远程多服务器](#module-30) · [模块 31：轻量常驻监控](#module-31) · [模块 32：趋势预测](#module-32) · [模块 33：告警推送](#module-33)\n\n---\n\n## 前置要求\n\n- **PowerShell 版本**：5.1+（Windows 自带，无需安装）\n- **无需 API Key**\n- **无需联网**（除首次安装 IIS 管理工具外）\n- **无需安装任何第三方软件**\n- ⚠️ **管理员权限检测**：部分功能需要管理员权限，AI 会在执行前自动检测并提示\n\n## 更新日志\n\n| v3.3.0 | 2026-09-11 | 新增轻量常驻监控（模块31：schtasks 定时采样 CPU/内存/磁盘/服务/事件日志写入 metrics.csv，阈值 YAML 可配，超限写入 alerts 表，不做常驻进程）；新增趋势预测（模块32：7 天基线 P50/P95，偏离 P95 输出异常报告，SMART 劣化斜率提前预警磁盘故障）；新增告警推送（模块33：企微/钉钉 webhook，环境变量存 URL，去抖防告警风暴，含主机名/指标/当前值/阈值/建议动作）；新增阈值配置 references/thresholds.yaml |\n| v3.1.0 | 2026-08-16 | 新增日志轮转功能（Write-WinskillLog，10MB/7天自动轮转清理）；新增模块索引命令（一键列出30个模块用途）；改进：移除废弃的 wmic 声明（已全面迁移 CIM cmdlet） |\n| v3.0.0 | 2026-08-06 | 新增性能基线与趋势分析模块（基线建立、异常偏离告警、趋势预测、瓶颈关联分析）、安全合规检查清单模块（等保2.0、CIS Benchmark、合规报告、修复建议）、远程多服务器管理模块（服务器注册、批量命令执行、统一监控面板、配置差异对比），总计30个模块，从单机工具升级为多机管理平台；修改展示方式：顶部模块导航锚点+每模块返回顶部链接 |\n| v2.0.0 | 2026-07-24 | 新增自动化修复向导模块（DNS修复、网络修复、WinUpdate修复、服务修复、磁盘清理、时间同步），总计27个模块，从诊断工具升级为修复工具 |\n| v1.9.0 | 2026-07-16 | 修复逻辑bug，新增 Docker / K8s 容器管理模块（Docker状态总览、容器资源监控、Docker健康检查、K8s集群状态、容器日志采集），总计26个模块，覆盖Windows Server容器化场景 |\n| v1.8.0 | 2026-07-16 | 新增 Docker / K8s 容器管理模块（Docker状态总览、容器资源监控、Docker健康检查、K8s集群状态、容器日志采集），总计26个模块，覆盖Windows Server容器化场景 |\n| v1.7.0 | 2026-07-10 | 新增系统文件完整性检查(SFC/DISM)、存储池管理、备份状态检查3个模块，总计25个模块；每个模块加折叠块；性能硬件自适应优化；新增更新提醒和禁止文件类型声明 |\n| v1.6.0 | 2026-07-09 | 新增SSL证书过期检测、防火墙规则审计、服务崩溃恢复状态3个模块，总计22个模块 |\n| v1.5.0 | 2026-07-08 | 新增计划任务审计、文件共享审计、DNS网卡诊断3个模块，总计19个模块 |\n| v1.4.0 | 2026-07-07 | 新增事件日志诊断、已安装程序管理、用户会话监控3个模块，总计16个模块 |\n| v1.3.0 | 2026-07-06 | 新增注册表启动项审计、磁盘健康检测、网络端口监控3个模块，总计13个模块 |\n| v1.2.0 | 2026-07-05 | 新增Windows Update性能监控、安全审计3个模块，所有命令折叠隐藏 |\n| v1.1.0 | 2026-07-04 | 新增快速开始/报错指引/FAQ |\n| v1.0.0 | 2026-07-03 | 初始版本，7个模块 |\n\n## 发布信息\n\n\n---\n\n## 🔔 更新提醒\n\n如何获取 winskill 最新版本：\n```bash\nskillhub upgrade winskill\n```\n\n当前版本：v3.3.0，如有新版本可用，请执行上述命令升级。\n\n---\n\n## 🚫 禁止的文件类型（全 Skill 生效 + SkillHub 打包排除）\n\n> 以下 5 大类文件类型在所有涉及文件操作的模块中均会被拦截，同时也会被 SkillHub 打包排除规则过滤。\n\n### 1. Windows 可执行 / 批处理脚本\n`.bat` `.cmd` `.ps1` `.vbs` `.exe` `.dll` `.lnk` `.msi`\n\n### 2. Office 二进制文档\n`.docx` `.xlsx` `.pptx` `.doc` `.xls` `.ppt` `.xlsm` `.docm` `.pptm`\n\n### 3. 二进制镜像 / 安装包\n`.iso` `.dmg` `.zip` `.rar` `.7z` `.tar` `.gz` `.apk` `.jar`\n\n### 4. 系统缓存 / 隐藏文件\n`.DS_Store` `.git` 目录 `.env` `.log` `.tmp`\n\n### 5. 其他风险脚本\n`.sh` `.com` `.scr` `.hta` `.reg`\n\nFile v3.3.0:_meta.json\n\n{\n  \"ownerId\": \"kn7chdrwbdhaqkwajcyhtfvjx989ddb1\",\n  \"slug\": \"winskill\",\n  \"version\": \"3.3.0\",\n  \"publishedAt\": 1789134172722\n}\n\nFile v3.3.0:references/compliance/cis-benchmark.yaml\n\n---\nversion: \"1.0.0\"\nupdated: \"2026-08-24\"\nstandard: \"CIS Benchmark\"\ndescription: \"Center for Internet Security - Windows Server 安全基线（精选关键控制项）\"\n---\n\nitems:\n  - id: \"CIS-1.1.1\"\n    category: 密码策略\n    item: 密码最小长度≥14\n    level: Level 1\n    module: module-05\n    check: \"net accounts | Select-String 'Minimum password length'\"\n    expected: \">= 14\"\n\n  - id: \"CIS-1.1.2\"\n    category: 密码策略\n    item: 密码复杂度已启用\n    level: Level 1\n    module: module-05\n    check: \"Get-ItemProperty -Path 'HKLM:\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\Lsa' -Name PasswordComplexity\"\n    expected: \"PasswordComplexity = 1\"\n\n  - id: \"CIS-2.2.1\"\n    category: 账户策略\n    item: Guest 账户已禁用\n    level: Level 1\n    module: module-16\n    check: \"Get-LocalUser -Name 'Guest' | Select-Object Enabled\"\n    expected: \"Enabled = False\"\n\n  - id: \"CIS-2.3.1.1\"\n    category: 登录策略\n    item: 限制空密码登录\n    level: Level 1\n    module: module-16\n    check: \"Get-ItemProperty -Path 'HKLM:\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\Lsa' -Name LimitBlankPasswordUse\"\n    expected: \"LimitBlankPasswordUse = 1\"\n\n  - id: \"CIS-5.1\"\n    category: 系统服务\n    item: Windows Update 服务运行中\n    level: Level 1\n    module: module-08\n    check: \"Get-Service -Name wuauserv | Select-Object Status\"\n    expected: \"Status = Running\"\n\n  - id: \"CIS-9.1\"\n    category: 防火墙\n    item: 所有防火墙配置文件已启用\n    level: Level 1\n    module: module-21\n    check: \"Get-NetFirewallProfile | Select-Object Name, Enabled\"\n    expected: \"全部 Enabled = True\"\n\n  - id: \"CIS-17.1\"\n    category: 审计策略\n    item: 登录事件审计（成功+失败）\n    level: Level 1\n    module: module-10\n    check: \"auditpol /get /subcategory:'Logon'\"\n    expected: \"Success and Failure\"\n\nFile v3.3.0:references/compliance/dp-2.0.yaml\n\n---\nversion: \"1.0.0\"\nupdated: \"2026-08-24\"\nstandard: \"等保 2.0\"\ndescription: \"信息安全技术 网络安全等级保护基本要求（GB/T 22239-2019）\"\n---\n\nitems:\n  - id: \"DP-2.0-001\"\n    category: 密码策略\n    item: 密码最小长度≥8\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Minimum password length'\"\n    expected: \">= 8\"\n\n  - id: \"DP-2.0-002\"\n    category: 密码策略\n    item: 密码最长使用期限≤90天\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Maximum password age'\"\n    expected: \"<= 90 或 Non-never\"\n\n  - id: \"DP-2.0-003\"\n    category: 密码策略\n    item: 密码历史记录≥5\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Password history length'\"\n    expected: \">= 5\"\n\n  - id: \"DP-2.0-004\"\n    category: 账户锁定\n    item: 锁定阈值≤5次\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Lockout threshold'\"\n    expected: \"<= 5 且非 Never\"\n\n  - id: \"DP-2.0-005\"\n    category: 账户锁定\n    item: 锁定时间≥15分钟\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Lockout duration'\"\n    expected: \">= 15 且非 Never\"\n\n  - id: \"DP-2.0-006\"\n    category: 审计日志\n    item: 登录事件审计（成功+失败）\n    level: 必级\n    module: module-10\n    check: \"auditpol /get /subcategory:'Logon'\"\n    expected: \"Success and Failure\"\n\n  - id: \"DP-2.0-007\"\n    category: 审计日志\n    item: 对象访问审计（成功+失败）\n    level: 必级\n    module: module-10\n    check: \"auditpol /get /subcategory:'Object Access'\"\n    expected: \"Success and Failure\"\n\n  - id: \"DP-2.0-008\"\n    category: 防火墙\n    item: 所有配置文件已启用防火墙\n    level: 必级\n    module: module-21\n    check: \"Get-NetFirewallProfile | Select-Object Name, Enabled\"\n    expected: \"全部 Enabled = True\"\n\n  - id: \"DP-2.0-009\"\n    category: 补丁更新\n    item: 最近 30 天内有补丁更新\n    level: 必级\n    module: module-15\n    check: \"Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 1\"\n    expected: \"InstalledOn 距今 <= 30 天\"\n\n  - id: \"DP-2.0-010\"\n    category: 远程桌面\n    item: RDP 网络级身份验证（NLA）\n    level: 必级\n    module: module-16\n    check: \"Get-ItemProperty -Path 'HKLM:\\\\System\\\\CurrentControlSet\\\\Control\\\\Terminal Server\\\\WinStations\\\\RDP-Tcp' -Name UserAuthentication\"\n    expected: \"UserAuthentication = 1\"\n\nFile v3.3.0:references/modules/module-01-磁盘空间分析.md\n\n---\r\nid: module-01\r\nname: 磁盘空间分析\r\ndescription: 扫描指定路径，找出占用空间的大文件和目录。\r\nkeywords: ['扫一下 C 盘大文件', 'D 盘哪个最占空间']\r\npermission: admin\r\nmode: readonly\r\nsubset: disk-management\r\n---\r\n\r\n### 模块 1：磁盘空间分析\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 1：磁盘空间分析</summary>\r\n\r\n**用途**：扫描指定路径，找出占用空间的大文件和目录。\r\n\r\n**常你说**：`\"扫一下 C 盘大文件\"` / `\"D 盘哪个最占空间\"`\r\n\r\n\r\n\r\n\r\n```powershell\r\n$scanPath = \"C:\\\"   # ← 改成你要扫的盘符或目录\r\n\r\nGet-ChildItem -Path $scanPath -Recurse -File -ErrorAction SilentlyContinue |\r\n    Where-Object { $_.Length -gt 100MB } |\r\n    Sort-Object Length -Descending |\r\n    Select-Object -First 50 @{N='路径';E={$_.FullName}},\r\n        @{N='大小(GB)';E={[math]::Round($_.Length/1GB,2)}},\r\n        @{N='最后修改';E={$_.LastWriteTime}}\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 无（只读）\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Access to the path 'xxx' is denied` | 权限不足 | 管理员身份运行 PowerShell |\r\n| `Could not find a part of the path` | 目录不存在 | 确认路径 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-2\"></a>\n\nFile v3.3.0:references/modules/module-02-大文件重复检测.md\n\n---\r\nid: module-02\r\nname: 大文件重复检测\r\ndescription: 通过 MD5 哈希找出重复文件。\r\nkeywords: ['找找 D 盘有没有重复文件']\r\npermission: user\r\nmode: readonly\r\nsubset: disk-management\r\n---\r\n\r\n### 模块 2：大文件重复检测\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 2：大文件重复检测</summary>\r\n\r\n**用途**：通过 MD5 哈希找出重复文件。\r\n\r\n**常你说**：`\"找找 D 盘有没有重复文件\"`\r\n\r\n\r\n\r\n\r\n```powershell\r\n$scanPath = \"D:\\\"   # ← 扫描目标目录\r\n$minSize = 1MB      # ← 只检测大于 1MB 的文件\r\n\r\nGet-ChildItem -Path $scanPath -Recurse -File -ErrorAction SilentlyContinue |\r\n    Where-Object { $_.Length -gt $minSize } |\r\n    ForEach-Object {\r\n        $hash = (Get-FileHash $_.FullName -Algorithm MD5 -ErrorAction SilentlyContinue).Hash\r\n        if ($hash) {\r\n            [PSCustomObject]@{\r\n                路径 = $_.FullName\r\n                哈希 = $hash\r\n                大小MB = [math]::Round($_.Length/1MB,2)\r\n            }\r\n        }\r\n    } |\r\n    Group-Object 哈希 |\r\n    Where-Object { $_.Count -gt 1 } |\r\n    ForEach-Object { $_.Group }\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 无（只读）\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Exception getting file hash` | 文件正在使用 | 跳过 |\r\n| `The specified path is not valid` | 路径格式不对 | 检查路径 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-3\"></a>\n\nFile v3.3.0:references/modules/module-03-临时文件安全清理.md\n\n---\r\nid: module-03\r\nname: 临时文件安全清理\r\ndescription: 扫描安全可删的临时文件，先预览后确认再清理。\r\nkeywords: ['帮我清理临时文件', 'C 盘快满了帮清 temp']\r\npermission: user\r\nmode: confirm\r\nsubset: basic\r\n---\r\n\r\n### 模块 3：临时文件安全清理\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 3：临时文件安全清理</summary>\r\n\r\n**用途**：扫描安全可删的临时文件，先预览后确认再清理。\r\n\r\n**常你说**：`\"帮我清理临时文件\"` / `\"C 盘快满了帮清 temp\"`\r\n\r\n**安全清理路径**：\r\n\r\n| 路径 | 说明 | 安全天数 |\r\n|------|------|---------|\r\n| `%TEMP%\\*` | 用户临时文件 | >7 天 |\r\n| `C:\\Windows\\Temp\\*` | 系统临时文件 | >7 天 |\r\n| `C:\\Windows\\SoftwareDistribution\\Download\\*` | Windows Update 下载缓存 | 任意 |\r\n| `C:\\Windows\\Prefetch\\*` | 程序预取 | >30 天 |\r\n| `IIS Temporary Compressed Files\\*` | IIS 压缩缓存 | >1 天 |\r\n\r\n\r\n\r\n\r\n```powershell\r\n$tempPath = $env:TEMP\r\n$daysOld = 7\r\n$cutoff = (Get-Date).AddDays(-$daysOld)\r\n\r\n$tempFiles = Get-ChildItem -Path $tempPath -Recurse -ErrorAction SilentlyContinue |\r\n    Where-Object { $_.LastWriteTime -lt $cutoff }\r\n\r\nWrite-Host \"═══════════════════════════════════════════\"\r\nWrite-Host \"  📋 扫描结果: $tempPath\"\r\nWrite-Host \"  过期临时文件数: $($tempFiles.Count) 个\"\r\nWrite-Host \"═══════════════════════════════════════════\"\r\n\r\n$tempFiles | Sort-Object Length -Descending |\r\n    Select-Object -First 20 |\r\n    Select-Object @{N='文件路径';E={$_.FullName}},\r\n        @{N='大小(KB)';E={[math]::Round($_.Length/1KB,1)}},\r\n        @{N='最后修改';E={$_.LastWriteTime}} |\r\n    Format-Table -AutoSize\r\n\r\n$totalKB = ($tempFiles | Measure-Object -Property Length -Sum).Sum\r\nWrite-Host \"  预计可释放空间: $([math]::Round($totalKB/1MB,2)) MB\"\r\nWrite-Host \"  ⚠️ 确认删除请说 '确认清理'\"\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n```powershell\r\n# ⚠️ 仅当用户明确说「确认清理」后才执行！\r\nWrite-Host \"  正在移到回收站...\"\r\n$shell = New-Object -ComObject Shell.Application\r\n$rb = $shell.NameSpace(0x0a)\r\n$totalFiles = 0\r\nforeach ($f in $tempFiles) {\r\n    try {\r\n        $rb.MoveHere($f.FullName)\r\n        $totalFiles++\r\n    } catch { }\r\n}\r\nWrite-Host \"  ✅ 已完成！已将 $totalFiles 个文件移到回收站\"\r\nWrite-Host \"  如需彻底删除，请手动清空回收站\"\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟡 中（需确认后删除）\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Cannot find path ... does not exist` | temp 目录下某些路径不存在 | 自动跳过 |\r\n| `Access is denied` | 系统临时文件正在使用中 | 跳过，正常现象 |\r\n| `MoveHere` 失败 | 回收站操作异常 | 手动清或用其他方式 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-4\"></a>\n\nFile v3.3.0:references/modules/module-04-IIS-站点管理.md\n\n---\r\nid: module-04\r\nname: IIS 站点管理\r\ndescription: 查看站点状态、应用池信息、快速重启。\r\nkeywords: ['我的 IIS 站点正常吗？', '重启一下应用池']\r\npermission: admin\r\nmode: readonly\r\nsubset: basic\r\n---\r\n\r\n### 模块 4：IIS 站点管理\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 4：IIS 站点管理</summary>\r\n\r\n**用途**：查看站点状态、应用池信息、快速重启。\r\n\r\n**常你说**：`\"我的 IIS 站点正常吗？\"` / `\"重启一下应用池\"`\r\n\r\n**前置条件**（需管理员权限）：\r\n\r\n\r\n```powershell\r\nif (-not (Get-Module -ListAvailable -Name WebAdministration)) {\r\n    Write-Host \"⚠️ IIS 管理工具未安装，请以管理员运行:\"\r\n    Install-WindowsFeature Web-Mgmt-Tools\r\n}\r\nImport-Module WebAdministration\r\n```\r\n\r\n\r\n\r\n\r\n\r\n```powershell\r\nImport-Module WebAdministration\r\n\r\nWrite-Host \"════════ IIS 站点列表 ════════\"\r\nGet-Website | Select-Object @{N='站点名';E={$_.Name}},\r\n    @{N='状态';E={$_.State}},\r\n    @{N='物理路径';E={$_.PhysicalPath}},\r\n    @{N='应用池';E={$_.ApplicationPool}},\r\n    @{N='绑定';E={$_.Bindings -join ';'}} |\r\n    Format-Table -AutoSize\r\n\r\nWrite-Host \"`n════════ 应用池状态 ════════\"\r\nGet-WebAppPoolState | Select-Object @{N='名';E={$_.Name}}, @{N='状态';E={$_.Value}} |\r\n    Format-Table -AutoSize\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n```powershell\r\n# ⚠️ 仅当用户明确确认后才执行！\r\n# Restart-WebSite -Name \"你的站点名\"\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 查看只读 / 🟡 重启需确认\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Get-Website is not recognized` | IIS 模块未加载 | `Install-WindowsFeature Web-Mgmt-Tools` |\r\n| `Cannot connect to IIS` | W3SVC 服务未启动 | 管理服务 |\r\n| `Could not find WebAdministration` | 未装 IIS 管理工具 | 添加 Web 管理工具 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-5\"></a>\n\nFile v3.3.0:references/modules/module-05-服务状态监控.md\n\n---\r\nid: module-05\r\nname: 服务状态监控\r\ndescription: 一眼看出哪些关键服务挂了。\r\nkeywords: ['检查服务器关键服务', '看下数据库有没有挂']\r\npermission: user\r\nmode: readonly\r\nsubset: performance\r\n---\r\n\r\n### 模块 5：服务状态监控\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 5：服务状态监控</summary>\r\n\r\n**用途**：一眼看出哪些关键服务挂了。\r\n\r\n**常你说**：`\"检查服务器关键服务\"` / `\"看下数据库有没有挂\"`\r\n\r\n\r\n\r\n\r\n```powershell\r\n$criticalServices = @(\r\n    \"W3SVC\",        # IIS\r\n    \"MSSQLSERVER\",  # SQL Server\r\n    \"MySQL80\",      # MySQL\r\n    \"Redis\",        # Redis\r\n    \"Elasticsearch\",# ES\r\n    \"Docker\",       # Docker\r\n    \"Spooler\",      # 打印\r\n    \"TermService\",  # 远程桌面\r\n    \"Nginx\",        # Nginx\r\n    \"Apache\",       # Apache\r\n    \"Tomcat\"        # Tomcat\r\n)\r\n\r\nWrite-Host \"════════ 关键服务状态 ════════\"\r\n$hasStopped = $false\r\nforeach ($svc in $criticalServices) {\r\n    $s = Get-Service -Name $svc -ErrorAction SilentlyContinue\r\n    if ($s) {\r\n        $icon = if ($s.Status -eq 'Running') { '✅' } else { '❌'; $hasStopped = $true }\r\n        Write-Host \"  $icon $($s.DisplayName) [$($s.Status)]\"\r\n    }\r\n}\r\nWrite-Host \"═══════════════════════════════\"\r\nif ($hasStopped) { Write-Host \"  ⚠️ 有服务未运行\" }\r\nelse { Write-Host \"  ✅ 所有检测服务正常\" }\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 无（只读）\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Cannot find any service ...` | 该服务未安装 | 自动跳过 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-6\"></a>\n\nFile v3.3.0:references/modules/module-06-批量文件操作.md\n\n---\r\nid: module-06\r\nname: 批量文件操作\r\ndescription: 先预览规则，再确认执行批量重命名/移动。\r\nkeywords: ['把所有 .log 改成 backup_1.log 格式']\r\npermission: user\r\nmode: confirm\r\nsubset: basic\r\n---\r\n\r\n### 模块 6：批量文件操作\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 6：批量文件操作</summary>\r\n\r\n**用途**：先预览规则，再确认执行批量重命名/移动。\r\n\r\n**常你说**：`\"把所有 .log 改成 backup_1.log 格式\"`\r\n\r\n\r\n\r\n\r\n```powershell\r\n$sourceDir = \"D:\\logs\"    # ← 源目录\r\n$searchFilter = \"*.log\"   # ← 文件筛选\r\n$renamePrefix = \"backup\"  # ← 新文件名前缀\r\n\r\n$files = Get-ChildItem -Path $sourceDir -Filter $searchFilter -File\r\nWrite-Host \"════════ 批量重命名预览 ════════\"\r\nWrite-Host \"  扫描到 $($files.Count) 个 $searchFilter 文件\"\r\n\r\n$i = 1\r\nforeach ($f in $files) {\r\n    Write-Host \"  🔄 $($f.Name) → ${renamePrefix}_${i}${f.Extension}\"\r\n    $i++\r\n}\r\n\r\nWrite-Host \"`n  共 $($files.Count) 个文件将被重命名\"\r\nWrite-Host \"  ⚠️ 确认执行请说 '确认重命名'\"\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n```powershell\r\n# ⚠️ 仅当用户明确说「确认重命名」后才执行！\r\n# $i = 1\r\n# foreach ($f in $files) {\r\n#     $newName = \"${renamePrefix}_${i}${f.Extension}\"\r\n#     Rename-Item -Path $f.FullName -NewName $newName\r\n#     Write-Host \"  ✅ $($f.Name) → $newName\"\r\n#     $i++\r\n# }\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟡 中（需确认）\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Cannot rename because item already exists` | 新文件名已存在 | 加时间戳避免重名 |\r\n| `Access to the path is denied` | 文件锁定 | 关相关程序再试 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-7\"></a>\n\nFile v3.3.0:references/modules/module-07-目录磁盘使用报告.md\n\n---\r\nid: module-07\r\nname: 目录磁盘使用报告\r\ndescription: 用进度条样式一眼看出各目录占用。\r\nkeywords: ['看看各个目录的空间占用']\r\npermission: user\r\nmode: readonly\r\nsubset: disk-management\r\n---\r\n\r\n### 模块 7：目录磁盘使用报告\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 7：目录磁盘使用报告</summary>\r\n\r\n**用途**：用进度条样式一眼看出各目录占用。\r\n\r\n**常你说**：`\"看看各个目录的空间占用\"`\r\n\r\n\r\n\r\n\r\n```powershell\r\nfunction Get-DirectorySize([string]$Path) {\r\n    (Get-ChildItem -Path $Path -Recurse -File -ErrorAction SilentlyContinue |\r\n     Measure-Object -Property Length -Sum).Sum\r\n}\r\n\r\n$dirs = @(\"C:\\inetpub\", \"C:\\Windows\\Temp\", \"C:\\ProgramData\",\r\n          \"$env:TEMP\", \"C:\\Users\",\r\n          \"C:\\Windows\\SoftwareDistribution\", \"D:\\\")\r\n\r\nforeach ($d in $dirs) {\r\n    if (Test-Path $d) {\r\n        $sizeGB = [math]::Round((Get-DirectorySize $d) / 1GB, 2)\r\n        if ($sizeGB -gt 10)     { $icon = '🔴' }\r\n        elseif ($sizeGB -gt 5) { $icon = '🟡' }\r\n        else                  { $icon = '🟢' }\r\n        Write-Host \"  $icon $d : ${sizeGB} GB\"\r\n    }\r\n}\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 无（只读）\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-8\"></a>\n\nFile v3.3.0:references/modules/module-08-Windows-Update-服务状态与缓存管理.md\n\n---\r\nid: module-08\r\nname: Windows Update 服务状态与缓存管理\r\ndescription: 诊断 Windows Update 是否卡住、查看已安装补丁、清理更新缓存。\r\nkeywords: ['Windows Update 正常吗？', '更新缓存能不能删']\r\npermission: user\r\nmode: readonly\r\nsubset: basic\r\n---\r\n\r\n## 🆕 模块 8：Windows Update 服务状态与缓存管理\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：🆕 模块 8：Windows Update 服务状态与缓存管理</summary>\r\n\r\n**用途**：诊断 Windows Update 是否卡住、查看已安装补丁、清理更新缓存。\r\n\r\n**常你说**：`\"Windows Update 正常吗？\"` / `\"更新缓存能不能删\"`\r\n\r\n### 8.1 查看更新服务状态与已安装补丁（只读）\r\n\r\n\r\n\r\n\r\n```powershell\r\n# 更新服务状态\r\nGet-Service -Name wuauserv |\r\n    Select-Object @{N='服务';E={$_.Name}},\r\n        @{N='状态';E={$_.Status}},\r\n        @{N='启动类型';E={$_.StartType}},\r\n        @{N='账号';E={$_.StartName}}\r\n\r\nWrite-Host \"\"\r\n\r\n# 已安装补丁（最近 10 个）\r\nGet-HotFix | Sort-Object InstalledOn -Descending |\r\n    Select-Object -First 10 @{N='补丁ID';E={$_.HotFixID}},\r\n        @{N='安装日期';E={$_.InstalledOn}}\r\n```\r\n\r\n\r\n\r\n### 8.2 检查 SoftwareDistribution 更新缓存大小\r\n\r\n\r\n\r\n\r\n```powershell\r\n$sd = \"C:\\Windows\\SoftwareDistribution\"\r\nif (Test-Path $sd) {\r\n    $total = (Get-ChildItem -Path $sd -Recurse -ErrorAction SilentlyContinue |\r\n              Measure-Object -Property Length -Sum).Sum\r\n    Write-Host \"  SoftwareDistribution 大小: $([math]::Round($total/1MB,1)) MB\"\r\n\r\n    $dlDir = Join-Path $sd \"Download\"\r\n    if (Test-Path $dlDir) {\r\n        $dlSize = (Get-ChildItem -Path $dlDir -Recurse -ErrorAction SilentlyContinue |\r\n                   Measure-Object -Property Length -Sum).Sum\r\n        Write-Host \"  └─ 下载缓存(Download): $([math]::Round($dlSize/1MB,1)) MB\"\r\n    }\r\n    Write-Host \"  💡 若超过 500MB 可考虑清理（需先停止 wuauserv 服务）\"\r\n} else {\r\n    Write-Host \"  ⚠️ SoftwareDistribution 目录不存在\"\r\n}\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n```powershell\r\n# ⚠️ 仅当用户明确说「确认清理更新缓存」后才执行！\r\n# Stop-Service -Name wuauserv -Force\r\n# Remove-Item -Path \"$sd\\Download\\*\" -Recurse -Force -ErrorAction SilentlyContinue\r\n# Start-Service -Name wuauserv\r\n# Write-Host \"  ✅ 已清理更新下载缓存，Windows Update 将重新下载所需补丁\"\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 查看只读 / 🟡 清理缓存需确认\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `The service ... cannot be stopped` | 服务正在使用 | 稍后重试或重启后清理 |\r\n| `Access is denied` | 部分缓存文件被锁定 | 先停服务再清理 |\r\n\r\n**常见坑 & 解决**：\r\n\r\n| 场景 | 说明 |\r\n|-----|------|\r\n| Windows Update 一直不下载 | 服务挂起，重停重启动可解决 |\r\n| 错误码 0x80070005 | 权限问题，清理缓存可修复 |\r\n| 补丁安装失败 | 清理 Download 缓存后重新检查更新 |\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-9\"></a>\n\nArchive v3.2.0: 36 files, 87114 bytes\n\nFiles: references/compliance/cis-benchmark.yaml (1842b), references/compliance/dp-2.0.yaml (2525b), references/modules/module-01-磁盘空间分析.md (1324b), references/modules/module-02-大文件重复检测.md (1484b), references/modules/module-03-临时文件安全清理.md (3040b), references/modules/module-04-IIS-站点管理.md (2010b), references/modules/module-05-服务状态监控.md (1765b), references/modules/module-06-批量文件操作.md (1824b), references/modules/module-07-目录磁盘使用报告.md (1311b), references/modules/module-08-Windows-Update-服务状态与缓存管理.md (3076b), references/modules/module-09-实时性能监控与进程资源分析.md (3379b), references/modules/module-10-安全审计与日志分析.md (3521b), references/modules/module-11-注册表与启动项安全审计.md (4745b), references/modules/module-12-磁盘健康状态检测.md (4014b), references/modules/module-13-网络连接与端口监控.md (3909b), references/modules/module-14-Windows-事件日志诊断.md (4325b), references/modules/module-15-已安装程序与补丁管理.md (4020b), references/modules/module-16-用户会话与登录状态监控.md (4988b), references/modules/module-17-计划任务审计.md (6846b), references/modules/module-18-文件共享与-SMB-审计.md (5986b), references/modules/module-19-DNS-解析与网卡诊断.md (6234b), references/modules/module-20-SSL-证书过期检测.md (7053b), references/modules/module-21-Windows-防火墙规则审计.md (6479b), references/modules/module-22-关键服务崩溃与自动恢复状态.md (6159b), references/modules/module-23-系统文件完整性检查与修复（SFC---DISM）.md (2606b), references/modules/module-24-存储池与虚拟磁盘管理（Storage-Spaces）.md (3973b), references/modules/module-25-Windows-Server-Backup-状态检查.md (4480b), references/modules/module-26-Docker---K8s-容器管理.md (12585b), references/modules/module-27-自动化修复向导.md (24281b), references/modules/module-28-性能基线-&-趋势分析.md (13458b), references/modules/module-29-安全合规检查清单.md (17269b), references/modules/module-30-远程多服务器管理.md (17154b), scripts/build-index.ps1 (3893b), skill-card.md (3394b), SKILL.md (11765b), _meta.json (127b)\n\nFile v3.2.0:SKILL.md\n\n---\nname: winskill\ndescription: \"Windows 服务器运维工具箱 - 磁盘分析、临时文件清理、IIS 站点管理、批量文件操作、服务状态监控、Windows Update 诊断、实时性能监控、安全审计、注册表启动项审计、磁盘健康检测、网络端口监控、事件日志诊断、已安装程序管理、用户会话监控、计划任务审计、文件共享审计、DNS网卡诊断、SSL证书过期检测、防火墙规则审计、服务崩溃恢复状态、系统文件修复、存储池管理、备份状态检查、Docker容器管理、K8s集群监控、自动化修复向导、性能基线与趋势分析、等保合规检查清单、远程多服务器管理、日志轮转、模块索引。只读分析+安全确认，绝不误删文件，完全免费离线运行。\"\nversion: 3.2.0\n---\n\n# Winskill — Windows 服务器运维工具箱\n\n## 快速开始\n\n**直接对 AI 说就行，不用记命令。**\n\n| 你想做什么 | 直接对 AI 说 |\n|-----------|-------------|\n| 看磁盘空间 | `\"帮我扫一下 D 盘大文件\"` |\n| 清理临时文件 | `\"看看我电脑的临时文件\"` |\n| 检查 IIS | `\"我的 IIS 站点还活着吗？\"` |\n| 检测重复文件 | `\"帮我找下重复文件\"` |\n| 检查服务状态 | `\"看下数据库和 IIS 服务有没有挂\"` |\n| Windows Update 状态 | `\"Windows Update 正常吗？有积压补丁吗？\"` |\n| 服务器卡顿定位 | `\"服务器变卡了，帮我看看是什么原因\"` |\n| 检查有没有被入侵 | `\"帮我查一下有没有异常登录\"` |\n| 检查可疑启动项 | `\"有没有可疑的自启动程序\"` |\n| 磁盘健康状态 | `\"硬盘还健康吗？有没有坏道\"` |\n| 网络连接监控 | `\"谁在连我的服务器\"` |\n| 系统日志哪里错了 | `\"系统日志有没有最近的错误\"` |\n| 服务器装了什么程序 | `\"看看系统安装了哪些软件\"` |\n| 谁在服务器上 | `\"当前有谁登录了服务器\"` |\n| 检查计划任务 | `\"有没有可疑的计划任务\"` |\n| 文件共享审计 | `\"有哪些共享文件夹，权限安全吗\"` |\n| DNS / 网卡诊断 | `\"DNS 解析正常吗\"` |\n| 搞不定了 | `\"我遇到报错了，帮我看看\"` |\n\n> ⚠️ **AI 必须遵守**：凡涉及删除、停止服务、修改系统的操作，必须先展示操作清单，等用户明确说\"确认执行\"后才可执行。\n\n---\n\n## 安全声明\n\n| 保护项 | 方式 |\n|-------|------|\n| 系统目录保护 | 绝不操作 `C:\\Windows`、`C:\\Program Files` 等 |\n| 删除必须确认 | 先展示受影响文件，等用户说\"确认清理\"后才执行 |\n| 回收站优先 | 删除用 `Shell.Application` 回收站 API |\n| 只读诊断 | 所有分析命令不修改任何文件/服务/注册表 |\n| 排除保护 | `pagefile.sys`、`hiberfil.sys` 等系统文件不可操作 |\n| 注册表保护 | 注册表分析只读，任何修改需双重确认 |\n| 日志读取保护 | 事件日志只读查看，不修改任何日志记录 |\n\n---\n\n## 功能模块\n\n### 📋 日志记录与轮转\n\n```powershell\nfunction Write-WinskillLog {\n    param([string]$Message)\n    $logDir = \"$env:USERPROFILE\\.workbuddy\\output\\winskill\"\n    $logFile = Join-Path $logDir \"winskill.log\"\n    New-Item -ItemType Directory -Force -Path $logDir | Out-Null\n    $timestamp = Get-Date -Format \"yyyy-MM-dd HH:mm:ss\"\n    \"$timestamp $Message\" | Out-File $logFile -Append -Encoding utf8\n    if (Test-Path $logFile) {\n        $size = (Get-Item $logFile).Length\n        if ($size -gt 10MB) {\n            $timestamp = Get-Date -Format \"yyyyMMddHHmmss\"\n            Move-Item $logFile \"winskill.log.$timestamp\" -Force\n        }\n    }\n    Get-ChildItem $logDir -Filter \"winskill.log.*\" | Where-Object {\n        $_.LastWriteTime -lt (Get-Date).AddDays(-7)\n    } | Remove-Item -Force\n}\n```\n\n### 📋 模块索引（一键列出所有可用操作）\n\n```powershell\nWrite-Host \"`n📋 Winskill 3.2.0 - 模块索引（共 30 个模块）\"\nWrite-Host (\"=\" * 60)\nWrite-Host (\"{0,-25} {1,-35}\" -f \"模块\", \"用途\")\nWrite-Host (\"-\" * 60)\n$modules = @(\n    \"模块 1: 磁盘空间分析 - 扫大文件/目录占用\",\n    \"模块 2: 大文件重复检测 - 找重复文件\",\n    \"模块 3: 临时文件安全清理 - 清理临时文件\",\n    \"模块 4: IIS 站点管理 - IIS 站点/应用池状态\",\n    \"模块 5: 服务状态监控 - Windows 服务状态\",\n    \"模块 6: 批量文件操作 - 批量重命名/移动/复制\",\n    \"模块 7: 目录磁盘使用报告 - 目录大小报告\",\n    \"模块 8: Windows Update 服务状态 - 更新服务/缓存\",\n    \"模块 9: 实时性能监控 - CPU/内存/磁盘/网络\",\n    \"模块 10: 安全审计与日志分析 - 暴力破解/特权操作\",\n    \"模块 11: 注册表与启动项安全审计 - 启动项/WMI\",\n    \"模块 12: 磁盘健康状态检测 - SMART/坏道/温度\",\n    \"模块 13: 网络连接与端口监控 - 连接/端口/防火墙\",\n    \"模块 14: Windows 事件日志诊断 - 系统/应用日志\",\n    \"模块 15: 已安装程序与补丁管理 - 程序/补丁清单\",\n    \"模块 16: 用户会话与登录状态监控 - 会话/登录\",\n    \"模块 17: 计划任务审计 - 计划任务清单\",\n    \"模块 18: 文件共享与 SMB 审计 - 共享/权限\",\n    \"模块 19: DNS 解析与网卡诊断 - DNS/网卡\",\n    \"模块 20: SSL 证书过期检测 - 证书扫描\",\n    \"模块 21: 防火墙规则审计 - 规则/高危检测\",\n    \"模块 22: 关键服务崩溃与自动恢复 - 服务崩溃记录\",\n    \"模块 23: 系统文件完整性检查与修复 - SFC/DISM\",\n    \"模块 24: 存储池与虚拟磁盘管理 - Storage Spaces\",\n    \"模块 25: Windows Server Backup 状态检查 - 备份状态\",\n    \"模块 26: Docker / K8s 容器管理 - 容器/集群\",\n    \"模块 27: 自动化修复向导 - 一键修复常见问题\",\n    \"模块 28: 性能基线 & 趋势分析 - 趋势/告警/预测\",\n    \"模块 29: 安全合规检查清单 - 等保2.0/CIS\",\n    \"模块 30: 远程多服务器管理 - 多机批量管理\"\n)\n$modules | ForEach-Object { Write-Host $_ }\nWrite-Host (\"=\" * 60)\nWrite-Host \"直接对 AI 说模块名称或用途即可调用\"\n```\n\n## 📌 模块导航（点击直达，共 30 个模块）\n\n**🖥️ 磁盘管理（5）：**\n[模块 1：磁盘空间分析](#module-1) · [模块 2：大文件重复检测](#module-2) · [模块 7：目录磁盘使用报告](#module-7) · [模块 12：磁盘健康状态检测](#module-12) · [模块 24：存储池与虚拟磁盘管理](#module-24)\n\n**🔒 网络安全（4）：**\n[模块 13：网络连接与端口监控](#module-13) · [模块 19：DNS 解析与网卡诊断](#module-19) · [模块 20：SSL 证书过期检测](#module-20) · [模块 21：Windows 防火墙规则审计](#module-21)\n\n**📊 性能监控（3）：**\n[模块 5：服务状态监控](#module-5) · [模块 9：实时性能监控](#module-9) · [模块 10：安全审计与日志分析](#module-10)\n\n**🔧 基础运维（12）：**\n[模块 3：临时文件安全清理](#module-3) · [模块 4：IIS 站点管理](#module-4) · [模块 6：批量文件操作](#module-6) · [模块 8：Windows Update](#module-8) · [模块 11：注册表审计](#module-11) · [模块 14：事件日志](#module-14) · [模块 15：程序与补丁](#module-15) · [模块 16：用户会话](#module-16) · [模块 17：计划任务](#module-17) · [模块 18：文件共享](#module-18) · [模块 22：服务崩溃](#module-22) · [模块 23：系统文件修复](#module-23) · [模块 25：备份状态](#module-25)\n\n**🚀 高级功能（5）：**\n[模块 26：Docker/K8s](#module-26) · [模块 27：自动化修复向导](#module-27) · [模块 28：性能基线](#module-28) · [模块 29：合规检查](#module-29) · [模块 30：远程多服务器](#module-30)\n\n---\n\n## 前置要求\n\n- **PowerShell 版本**：5.1+（Windows 自带，无需安装）\n- **无需 API Key**\n- **无需联网**（除首次安装 IIS 管理工具外）\n- **无需安装任何第三方软件**\n- ⚠️ **管理员权限检测**：部分功能需要管理员权限，AI 会在执行前自动检测并提示\n\n## 更新日志\n\n| v3.2.0 | 2026-08-24 | 结构化重构：SKILL.md 分层索引化（主文件只保留能力目录，30 个模块 PowerShell 片段拆到 references/modules/*.md）；等保 2.0/CIS 合规清单版本化（references/compliance/*.yaml）；新增目录生成脚本（scripts/build-index.ps1）；新增一键巡检与修复向导串联（巡检编排器顺序执行只读探针，聚合为 HTML 报告，衔接修复向导） |\n| v3.1.0 | 2026-08-16 | 新增日志轮转功能（Write-WinskillLog，10MB/7天自动轮转清理）；新增模块索引命令（一键列出30个模块用途）；改进：移除废弃的 wmic 声明（已全面迁移 CIM cmdlet） |\n| v3.0.0 | 2026-08-06 | 新增性能基线与趋势分析模块（基线建立、异常偏离告警、趋势预测、瓶颈关联分析）、安全合规检查清单模块（等保2.0、CIS Benchmark、合规报告、修复建议）、远程多服务器管理模块（服务器注册、批量命令执行、统一监控面板、配置差异对比），总计30个模块，从单机工具升级为多机管理平台；修改展示方式：顶部模块导航锚点+每模块返回顶部链接 |\n| v2.0.0 | 2026-07-24 | 新增自动化修复向导模块（DNS修复、网络修复、WinUpdate修复、服务修复、磁盘清理、时间同步），总计27个模块，从诊断工具升级为修复工具 |\n| v1.9.0 | 2026-07-16 | 修复逻辑bug，新增 Docker / K8s 容器管理模块（Docker状态总览、容器资源监控、Docker健康检查、K8s集群状态、容器日志采集），总计26个模块，覆盖Windows Server容器化场景 |\n| v1.8.0 | 2026-07-16 | 新增 Docker / K8s 容器管理模块（Docker状态总览、容器资源监控、Docker健康检查、K8s集群状态、容器日志采集），总计26个模块，覆盖Windows Server容器化场景 |\n| v1.7.0 | 2026-07-10 | 新增系统文件完整性检查(SFC/DISM)、存储池管理、备份状态检查3个模块，总计25个模块；每个模块加折叠块；性能硬件自适应优化；新增更新提醒和禁止文件类型声明 |\n| v1.6.0 | 2026-07-09 | 新增SSL证书过期检测、防火墙规则审计、服务崩溃恢复状态3个模块，总计22个模块 |\n| v1.5.0 | 2026-07-08 | 新增计划任务审计、文件共享审计、DNS网卡诊断3个模块，总计19个模块 |\n| v1.4.0 | 2026-07-07 | 新增事件日志诊断、已安装程序管理、用户会话监控3个模块，总计16个模块 |\n| v1.3.0 | 2026-07-06 | 新增注册表启动项审计、磁盘健康检测、网络端口监控3个模块，总计13个模块 |\n| v1.2.0 | 2026-07-05 | 新增Windows Update性能监控、安全审计3个模块，所有命令折叠隐藏 |\n| v1.1.0 | 2026-07-04 | 新增快速开始/报错指引/FAQ |\n| v1.0.0 | 2026-07-03 | 初始版本，7个模块 |\n\n## 发布信息\n\n\n---\n\n## 🔔 更新提醒\n\n如何获取 winskill 最新版本：\n```bash\nskillhub upgrade winskill\n```\n\n当前版本：v3.2.0，如有新版本可用，请执行上述命令升级。\n\n---\n\n## 🚫 禁止的文件类型（全 Skill 生效 + SkillHub 打包排除）\n\n> 以下 5 大类文件类型在所有涉及文件操作的模块中均会被拦截，同时也会被 SkillHub 打包排除规则过滤。\n\n### 1. Windows 可执行 / 批处理脚本\n`.bat` `.cmd` `.ps1` `.vbs` `.exe` `.dll` `.lnk` `.msi`\n\n### 2. Office 二进制文档\n`.docx` `.xlsx` `.pptx` `.doc` `.xls` `.ppt` `.xlsm` `.docm` `.pptm`\n\n### 3. 二进制镜像 / 安装包\n`.iso` `.dmg` `.zip` `.rar` `.7z` `.tar` `.gz` `.apk` `.jar`\n\n### 4. 系统缓存 / 隐藏文件\n`.DS_Store` `.git` 目录 `.env` `.log` `.tmp`\n\n### 5. 其他风险脚本\n`.sh` `.com` `.scr` `.hta` `.reg`\n\nFile v3.2.0:_meta.json\n\n{\n  \"ownerId\": \"kn7chdrwbdhaqkwajcyhtfvjx989ddb1\",\n  \"slug\": \"winskill\",\n  \"version\": \"3.2.0\",\n  \"publishedAt\": 1787555195323\n}\n\nFile v3.2.0:references/compliance/cis-benchmark.yaml\n\n---\nversion: \"1.0.0\"\nupdated: \"2026-08-24\"\nstandard: \"CIS Benchmark\"\ndescription: \"Center for Internet Security - Windows Server 安全基线（精选关键控制项）\"\n---\n\nitems:\n  - id: \"CIS-1.1.1\"\n    category: 密码策略\n    item: 密码最小长度≥14\n    level: Level 1\n    module: module-05\n    check: \"net accounts | Select-String 'Minimum password length'\"\n    expected: \">= 14\"\n\n  - id: \"CIS-1.1.2\"\n    category: 密码策略\n    item: 密码复杂度已启用\n    level: Level 1\n    module: module-05\n    check: \"Get-ItemProperty -Path 'HKLM:\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\Lsa' -Name PasswordComplexity\"\n    expected: \"PasswordComplexity = 1\"\n\n  - id: \"CIS-2.2.1\"\n    category: 账户策略\n    item: Guest 账户已禁用\n    level: Level 1\n    module: module-16\n    check: \"Get-LocalUser -Name 'Guest' | Select-Object Enabled\"\n    expected: \"Enabled = False\"\n\n  - id: \"CIS-2.3.1.1\"\n    category: 登录策略\n    item: 限制空密码登录\n    level: Level 1\n    module: module-16\n    check: \"Get-ItemProperty -Path 'HKLM:\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\Lsa' -Name LimitBlankPasswordUse\"\n    expected: \"LimitBlankPasswordUse = 1\"\n\n  - id: \"CIS-5.1\"\n    category: 系统服务\n    item: Windows Update 服务运行中\n    level: Level 1\n    module: module-08\n    check: \"Get-Service -Name wuauserv | Select-Object Status\"\n    expected: \"Status = Running\"\n\n  - id: \"CIS-9.1\"\n    category: 防火墙\n    item: 所有防火墙配置文件已启用\n    level: Level 1\n    module: module-21\n    check: \"Get-NetFirewallProfile | Select-Object Name, Enabled\"\n    expected: \"全部 Enabled = True\"\n\n  - id: \"CIS-17.1\"\n    category: 审计策略\n    item: 登录事件审计（成功+失败）\n    level: Level 1\n    module: module-10\n    check: \"auditpol /get /subcategory:'Logon'\"\n    expected: \"Success and Failure\"\n\nFile v3.2.0:references/compliance/dp-2.0.yaml\n\n---\nversion: \"1.0.0\"\nupdated: \"2026-08-24\"\nstandard: \"等保 2.0\"\ndescription: \"信息安全技术 网络安全等级保护基本要求（GB/T 22239-2019）\"\n---\n\nitems:\n  - id: \"DP-2.0-001\"\n    category: 密码策略\n    item: 密码最小长度≥8\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Minimum password length'\"\n    expected: \">= 8\"\n\n  - id: \"DP-2.0-002\"\n    category: 密码策略\n    item: 密码最长使用期限≤90天\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Maximum password age'\"\n    expected: \"<= 90 或 Non-never\"\n\n  - id: \"DP-2.0-003\"\n    category: 密码策略\n    item: 密码历史记录≥5\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Password history length'\"\n    expected: \">= 5\"\n\n  - id: \"DP-2.0-004\"\n    category: 账户锁定\n    item: 锁定阈值≤5次\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Lockout threshold'\"\n    expected: \"<= 5 且非 Never\"\n\n  - id: \"DP-2.0-005\"\n    category: 账户锁定\n    item: 锁定时间≥15分钟\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Lockout duration'\"\n    expected: \">= 15 且非 Never\"\n\n  - id: \"DP-2.0-006\"\n    category: 审计日志\n    item: 登录事件审计（成功+失败）\n    level: 必级\n    module: module-10\n    check: \"auditpol /get /subcategory:'Logon'\"\n    expected: \"Success and Failure\"\n\n  - id: \"DP-2.0-007\"\n    category: 审计日志\n    item: 对象访问审计（成功+失败）\n    level: 必级\n    module: module-10\n    check: \"auditpol /get /subcategory:'Object Access'\"\n    expected: \"Success and Failure\"\n\n  - id: \"DP-2.0-008\"\n    category: 防火墙\n    item: 所有配置文件已启用防火墙\n    level: 必级\n    module: module-21\n    check: \"Get-NetFirewallProfile | Select-Object Name, Enabled\"\n    expected: \"全部 Enabled = True\"\n\n  - id: \"DP-2.0-009\"\n    category: 补丁更新\n    item: 最近 30 天内有补丁更新\n    level: 必级\n    module: module-15\n    check: \"Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 1\"\n    expected: \"InstalledOn 距今 <= 30 天\"\n\n  - id: \"DP-2.0-010\"\n    category: 远程桌面\n    item: RDP 网络级身份验证（NLA）\n    level: 必级\n    module: module-16\n    check: \"Get-ItemProperty -Path 'HKLM:\\\\System\\\\CurrentControlSet\\\\Control\\\\Terminal Server\\\\WinStations\\\\RDP-Tcp' -Name UserAuthentication\"\n    expected: \"UserAuthentication = 1\"\n\nFile v3.2.0:references/modules/module-01-磁盘空间分析.md\n\n---\r\nid: module-01\r\nname: 磁盘空间分析\r\ndescription: 扫描指定路径，找出占用空间的大文件和目录。\r\nkeywords: ['扫一下 C 盘大文件', 'D 盘哪个最占空间']\r\npermission: admin\r\nmode: readonly\r\nsubset: disk-management\r\n---\r\n\r\n### 模块 1：磁盘空间分析\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 1：磁盘空间分析</summary>\r\n\r\n**用途**：扫描指定路径，找出占用空间的大文件和目录。\r\n\r\n**常你说**：`\"扫一下 C 盘大文件\"` / `\"D 盘哪个最占空间\"`\r\n\r\n\r\n\r\n\r\n```powershell\r\n$scanPath = \"C:\\\"   # ← 改成你要扫的盘符或目录\r\n\r\nGet-ChildItem -Path $scanPath -Recurse -File -ErrorAction SilentlyContinue |\r\n    Where-Object { $_.Length -gt 100MB } |\r\n    Sort-Object Length -Descending |\r\n    Select-Object -First 50 @{N='路径';E={$_.FullName}},\r\n        @{N='大小(GB)';E={[math]::Round($_.Length/1GB,2)}},\r\n        @{N='最后修改';E={$_.LastWriteTime}}\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 无（只读）\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Access to the path 'xxx' is denied` | 权限不足 | 管理员身份运行 PowerShell |\r\n| `Could not find a part of the path` | 目录不存在 | 确认路径 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-2\"></a>\n\nFile v3.2.0:references/modules/module-02-大文件重复检测.md\n\n---\r\nid: module-02\r\nname: 大文件重复检测\r\ndescription: 通过 MD5 哈希找出重复文件。\r\nkeywords: ['找找 D 盘有没有重复文件']\r\npermission: user\r\nmode: readonly\r\nsubset: disk-management\r\n---\r\n\r\n### 模块 2：大文件重复检测\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 2：大文件重复检测</summary>\r\n\r\n**用途**：通过 MD5 哈希找出重复文件。\r\n\r\n**常你说**：`\"找找 D 盘有没有重复文件\"`\r\n\r\n\r\n\r\n\r\n```powershell\r\n$scanPath = \"D:\\\"   # ← 扫描目标目录\r\n$minSize = 1MB      # ← 只检测大于 1MB 的文件\r\n\r\nGet-ChildItem -Path $scanPath -Recurse -File -ErrorAction SilentlyContinue |\r\n    Where-Object { $_.Length -gt $minSize } |\r\n    ForEach-Object {\r\n        $hash = (Get-FileHash $_.FullName -Algorithm MD5 -ErrorAction SilentlyContinue).Hash\r\n        if ($hash) {\r\n            [PSCustomObject]@{\r\n                路径 = $_.FullName\r\n                哈希 = $hash\r\n                大小MB = [math]::Round($_.Length/1MB,2)\r\n            }\r\n        }\r\n    } |\r\n    Group-Object 哈希 |\r\n    Where-Object { $_.Count -gt 1 } |\r\n    ForEach-Object { $_.Group }\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 无（只读）\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Exception getting file hash` | 文件正在使用 | 跳过 |\r\n| `The specified path is not valid` | 路径格式不对 | 检查路径 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-3\"></a>\n\nFile v3.2.0:references/modules/module-03-临时文件安全清理.md\n\n---\r\nid: module-03\r\nname: 临时文件安全清理\r\ndescription: 扫描安全可删的临时文件，先预览后确认再清理。\r\nkeywords: ['帮我清理临时文件', 'C 盘快满了帮清 temp']\r\npermission: user\r\nmode: confirm\r\nsubset: basic\r\n---\r\n\r\n### 模块 3：临时文件安全清理\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 3：临时文件安全清理</summary>\r\n\r\n**用途**：扫描安全可删的临时文件，先预览后确认再清理。\r\n\r\n**常你说**：`\"帮我清理临时文件\"` / `\"C 盘快满了帮清 temp\"`\r\n\r\n**安全清理路径**：\r\n\r\n| 路径 | 说明 | 安全天数 |\r\n|------|------|---------|\r\n| `%TEMP%\\*` | 用户临时文件 | >7 天 |\r\n| `C:\\Windows\\Temp\\*` | 系统临时文件 | >7 天 |\r\n| `C:\\Windows\\SoftwareDistribution\\Download\\*` | Windows Update 下载缓存 | 任意 |\r\n| `C:\\Windows\\Prefetch\\*` | 程序预取 | >30 天 |\r\n| `IIS Temporary Compressed Files\\*` | IIS 压缩缓存 | >1 天 |\r\n\r\n\r\n\r\n\r\n```powershell\r\n$tempPath = $env:TEMP\r\n$daysOld = 7\r\n$cutoff = (Get-Date).AddDays(-$daysOld)\r\n\r\n$tempFiles = Get-ChildItem -Path $tempPath -Recurse -ErrorAction SilentlyContinue |\r\n    Where-Object { $_.LastWriteTime -lt $cutoff }\r\n\r\nWrite-Host \"═══════════════════════════════════════════\"\r\nWrite-Host \"  📋 扫描结果: $tempPath\"\r\nWrite-Host \"  过期临时文件数: $($tempFiles.Count) 个\"\r\nWrite-Host \"═══════════════════════════════════════════\"\r\n\r\n$tempFiles | Sort-Object Length -Descending |\r\n    Select-Object -First 20 |\r\n    Select-Object @{N='文件路径';E={$_.FullName}},\r\n        @{N='大小(KB)';E={[math]::Round($_.Length/1KB,1)}},\r\n        @{N='最后修改';E={$_.LastWriteTime}} |\r\n    Format-Table -AutoSize\r\n\r\n$totalKB = ($tempFiles | Measure-Object -Property Length -Sum).Sum\r\nWrite-Host \"  预计可释放空间: $([math]::Round($totalKB/1MB,2)) MB\"\r\nWrite-Host \"  ⚠️ 确认删除请说 '确认清理'\"\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n```powershell\r\n# ⚠️ 仅当用户明确说「确认清理」后才执行！\r\nWrite-Host \"  正在移到回收站...\"\r\n$shell = New-Object -ComObject Shell.Application\r\n$rb = $shell.NameSpace(0x0a)\r\n$totalFiles = 0\r\nforeach ($f in $tempFiles) {\r\n    try {\r\n        $rb.MoveHere($f.FullName)\r\n        $totalFiles++\r\n    } catch { }\r\n}\r\nWrite-Host \"  ✅ 已完成！已将 $totalFiles 个文件移到回收站\"\r\nWrite-Host \"  如需彻底删除，请手动清空回收站\"\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟡 中（需确认后删除）\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Cannot find path ... does not exist` | temp 目录下某些路径不存在 | 自动跳过 |\r\n| `Access is denied` | 系统临时文件正在使用中 | 跳过，正常现象 |\r\n| `MoveHere` 失败 | 回收站操作异常 | 手动清或用其他方式 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-4\"></a>\n\nFile v3.2.0:references/modules/module-04-IIS-站点管理.md\n\n---\r\nid: module-04\r\nname: IIS 站点管理\r\ndescription: 查看站点状态、应用池信息、快速重启。\r\nkeywords: ['我的 IIS 站点正常吗？', '重启一下应用池']\r\npermission: admin\r\nmode: readonly\r\nsubset: basic\r\n---\r\n\r\n### 模块 4：IIS 站点管理\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 4：IIS 站点管理</summary>\r\n\r\n**用途**：查看站点状态、应用池信息、快速重启。\r\n\r\n**常你说**：`\"我的 IIS 站点正常吗？\"` / `\"重启一下应用池\"`\r\n\r\n**前置条件**（需管理员权限）：\r\n\r\n\r\n```powershell\r\nif (-not (Get-Module -ListAvailable -Name WebAdministration)) {\r\n    Write-Host \"⚠️ IIS 管理工具未安装，请以管理员运行:\"\r\n    Install-WindowsFeature Web-Mgmt-Tools\r\n}\r\nImport-Module WebAdministration\r\n```\r\n\r\n\r\n\r\n\r\n\r\n```powershell\r\nImport-Module WebAdministration\r\n\r\nWrite-Host \"════════ IIS 站点列表 ════════\"\r\nGet-Website | Select-Object @{N='站点名';E={$_.Name}},\r\n    @{N='状态';E={$_.State}},\r\n    @{N='物理路径';E={$_.PhysicalPath}},\r\n    @{N='应用池';E={$_.ApplicationPool}},\r\n    @{N='绑定';E={$_.Bindings -join ';'}} |\r\n    Format-Table -AutoSize\r\n\r\nWrite-Host \"`n════════ 应用池状态 ════════\"\r\nGet-WebAppPoolState | Select-Object @{N='名';E={$_.Name}}, @{N='状态';E={$_.Value}} |\r\n    Format-Table -AutoSize\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n```powershell\r\n# ⚠️ 仅当用户明确确认后才执行！\r\n# Restart-WebSite -Name \"你的站点名\"\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 查看只读 / 🟡 重启需确认\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Get-Website is not recognized` | IIS 模块未加载 | `Install-WindowsFeature Web-Mgmt-Tools` |\r\n| `Cannot connect to IIS` | W3SVC 服务未启动 | 管理服务 |\r\n| `Could not find WebAdministration` | 未装 IIS 管理工具 | 添加 Web 管理工具 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-5\"></a>\n\nFile v3.2.0:references/modules/module-05-服务状态监控.md\n\n---\r\nid: module-05\r\nname: 服务状态监控\r\ndescription: 一眼看出哪些关键服务挂了。\r\nkeywords: ['检查服务器关键服务', '看下数据库有没有挂']\r\npermission: user\r\nmode: readonly\r\nsubset: performance\r\n---\r\n\r\n### 模块 5：服务状态监控\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 5：服务状态监控</summary>\r\n\r\n**用途**：一眼看出哪些关键服务挂了。\r\n\r\n**常你说**：`\"检查服务器关键服务\"` / `\"看下数据库有没有挂\"`\r\n\r\n\r\n\r\n\r\n```powershell\r\n$criticalServices = @(\r\n    \"W3SVC\",        # IIS\r\n    \"MSSQLSERVER\",  # SQL Server\r\n    \"MySQL80\",      # MySQL\r\n    \"Redis\",        # Redis\r\n    \"Elasticsearch\",# ES\r\n    \"Docker\",       # Docker\r\n    \"Spooler\",      # 打印\r\n    \"TermService\",  # 远程桌面\r\n    \"Nginx\",        # Nginx\r\n    \"Apache\",       # Apache\r\n    \"Tomcat\"        # Tomcat\r\n)\r\n\r\nWrite-Host \"════════ 关键服务状态 ════════\"\r\n$hasStopped = $false\r\nforeach ($svc in $criticalServices) {\r\n    $s = Get-Service -Name $svc -ErrorAction SilentlyContinue\r\n    if ($s) {\r\n        $icon = if ($s.Status -eq 'Running') { '✅' } else { '❌'; $hasStopped = $true }\r\n        Write-Host \"  $icon $($s.DisplayName) [$($s.Status)]\"\r\n    }\r\n}\r\nWrite-Host \"═══════════════════════════════\"\r\nif ($hasStopped) { Write-Host \"  ⚠️ 有服务未运行\" }\r\nelse { Write-Host \"  ✅ 所有检测服务正常\" }\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 无（只读）\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Cannot find any service ...` | 该服务未安装 | 自动跳过 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-6\"></a>\n\nFile v3.2.0:references/modules/module-06-批量文件操作.md\n\n---\r\nid: module-06\r\nname: 批量文件操作\r\ndescription: 先预览规则，再确认执行批量重命名/移动。\r\nkeywords: ['把所有 .log 改成 backup_1.log 格式']\r\npermission: user\r\nmode: confirm\r\nsubset: basic\r\n---\r\n\r\n### 模块 6：批量文件操作\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 6：批量文件操作</summary>\r\n\r\n**用途**：先预览规则，再确认执行批量重命名/移动。\r\n\r\n**常你说**：`\"把所有 .log 改成 backup_1.log 格式\"`\r\n\r\n\r\n\r\n\r\n```powershell\r\n$sourceDir = \"D:\\logs\"    # ← 源目录\r\n$searchFilter = \"*.log\"   # ← 文件筛选\r\n$renamePrefix = \"backup\"  # ← 新文件名前缀\r\n\r\n$files = Get-ChildItem -Path $sourceDir -Filter $searchFilter -File\r\nWrite-Host \"════════ 批量重命名预览 ════════\"\r\nWrite-Host \"  扫描到 $($files.Count) 个 $searchFilter 文件\"\r\n\r\n$i = 1\r\nforeach ($f in $files) {\r\n    Write-Host \"  🔄 $($f.Name) → ${renamePrefix}_${i}${f.Extension}\"\r\n    $i++\r\n}\r\n\r\nWrite-Host \"`n  共 $($files.Count) 个文件将被重命名\"\r\nWrite-Host \"  ⚠️ 确认执行请说 '确认重命名'\"\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n```powershell\r\n# ⚠️ 仅当用户明确说「确认重命名」后才执行！\r\n# $i = 1\r\n# foreach ($f in $files) {\r\n#     $newName = \"${renamePrefix}_${i}${f.Extension}\"\r\n#     Rename-Item -Path $f.FullName -NewName $newName\r\n#     Write-Host \"  ✅ $($f.Name) → $newName\"\r\n#     $i++\r\n# }\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟡 中（需确认）\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Cannot rename because item already exists` | 新文件名已存在 | 加时间戳避免重名 |\r\n| `Access to the path is denied` | 文件锁定 | 关相关程序再试 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-7\"></a>\n\nFile v3.2.0:references/modules/module-07-目录磁盘使用报告.md\n\n---\r\nid: module-07\r\nname: 目录磁盘使用报告\r\ndescription: 用进度条样式一眼看出各目录占用。\r\nkeywords: ['看看各个目录的空间占用']\r\npermission: user\r\nmode: readonly\r\nsubset: disk-management\r\n---\r\n\r\n### 模块 7：目录磁盘使用报告\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 7：目录磁盘使用报告</summary>\r\n\r\n**用途**：用进度条样式一眼看出各目录占用。\r\n\r\n**常你说**：`\"看看各个目录的空间占用\"`\r\n\r\n\r\n\r\n\r\n```powershell\r\nfunction Get-DirectorySize([string]$Path) {\r\n    (Get-ChildItem -Path $Path -Recurse -File -ErrorAction SilentlyContinue |\r\n     Measure-Object -Property Length -Sum).Sum\r\n}\r\n\r\n$dirs = @(\"C:\\inetpub\", \"C:\\Windows\\Temp\", \"C:\\ProgramData\",\r\n          \"$env:TEMP\", \"C:\\Users\",\r\n          \"C:\\Windows\\SoftwareDistribution\", \"D:\\\")\r\n\r\nforeach ($d in $dirs) {\r\n    if (Test-Path $d) {\r\n        $sizeGB = [math]::Round((Get-DirectorySize $d) / 1GB, 2)\r\n        if ($sizeGB -gt 10)     { $icon = '🔴' }\r\n        elseif ($sizeGB -gt 5) { $icon = '🟡' }\r\n        else                  { $icon = '🟢' }\r\n        Write-Host \"  $icon $d : ${sizeGB} GB\"\r\n    }\r\n}\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 无（只读）\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-8\"></a>\n\nFile v3.2.0:references/modules/module-08-Windows-Update-服务状态与缓存管理.md\n\n---\r\nid: module-08\r\nname: Windows Update 服务状态与缓存管理\r\ndescription: 诊断 Windows Update 是否卡住、查看已安装补丁、清理更新缓存。\r\nkeywords: ['Windows Update 正常吗？', '更新缓存能不能删']\r\npermission: user\r\nmode: readonly\r\nsubset: basic\r\n---\r\n\r\n## 🆕 模块 8：Windows Update 服务状态与缓存管理\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：🆕 模块 8：Windows Update 服务状态与缓存管理</summary>\r\n\r\n**用途**：诊断 Windows Update 是否卡住、查看已安装补丁、清理更新缓存。\r\n\r\n**常你说**：`\"Windows Update 正常吗？\"` / `\"更新缓存能不能删\"`\r\n\r\n### 8.1 查看更新服务状态与已安装补丁（只读）\r\n\r\n\r\n\r\n\r\n```powershell\r\n# 更新服务状态\r\nGet-Service -Name wuauserv |\r\n    Select-Object @{N='服务';E={$_.Name}},\r\n        @{N='状态';E={$_.Status}},\r\n        @{N='启动类型';E={$_.StartType}},\r\n        @{N='账号';E={$_.StartName}}\r\n\r\nWrite-Host \"\"\r\n\r\n# 已安装补丁（最近 10 个）\r\nGet-HotFix | Sort-Object InstalledOn -Descending |\r\n    Select-Object -First 10 @{N='补丁ID';E={$_.HotFixID}},\r\n        @{N='安装日期';E={$_.InstalledOn}}\r\n```\r\n\r\n\r\n\r\n### 8.2 检查 SoftwareDistribution 更新缓存大小\r\n\r\n\r\n\r\n\r\n```powershell\r\n$sd = \"C:\\Windows\\SoftwareDistribution\"\r\nif (Test-Path $sd) {\r\n    $total = (Get-ChildItem -Path $sd -Recurse -ErrorAction SilentlyContinue |\r\n              Measure-Object -Property Length -Sum).Sum\r\n    Write-Host \"  SoftwareDistribution 大小: $([math]::Round($total/1MB,1)) MB\"\r\n\r\n    $dlDir = Join-Path $sd \"Download\"\r\n    if (Test-Path $dlDir) {\r\n        $dlSize = (Get-ChildItem -Path $dlDir -Recurse -ErrorAction SilentlyContinue |\r\n                   Measure-Object -Property Length -Sum).Sum\r\n        Write-Host \"  └─ 下载缓存(Download): $([math]::Round($dlSize/1MB,1)) MB\"\r\n    }\r\n    Write-Host \"  💡 若超过 500MB 可考虑清理（需先停止 wuauserv 服务）\"\r\n} else {\r\n    Write-Host \"  ⚠️ SoftwareDistribution 目录不存在\"\r\n}\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n```powershell\r\n# ⚠️ 仅当用户明确说「确认清理更新缓存」后才执行！\r\n# Stop-Service -Name wuauserv -Force\r\n# Remove-Item -Path \"$sd\\Download\\*\" -Recurse -Force -ErrorAction SilentlyContinue\r\n# Start-Service -Name wuauserv\r\n# Write-Host \"  ✅ 已清理更新下载缓存，Windows Update 将重新下载所需补丁\"\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 查看只读 / 🟡 清理缓存需确认\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `The service ... cannot be stopped` | 服务正在使用 | 稍后重试或重启后清理 |\r\n| `Access is denied` | 部分缓存文件被锁定 | 先停服务再清理 |\r\n\r\n**常见坑 & 解决**：\r\n\r\n| 场景 | 说明 |\r\n|-----|------|\r\n| Windows Update 一直不下载 | 服务挂起，重停重启动可解决 |\r\n| 错误码 0x80070005 | 权限问题，清理缓存可修复 |\r\n| 补丁安装失败 | 清理 Download 缓存后重新检查更新 |\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-9\"></a>\n\nArchive v3.1.0: 3 files, 50995 bytes\n\nFiles: skill-card.md (2748b), SKILL.md (177635b), _meta.json (127b)\n\nFile v3.1.0:SKILL.md\n\n---\nname: winskill\ndescription: \"Windows 服务器运维工具箱 - 磁盘分析、临时文件清理、IIS 站点管理、批量文件操作、服务状态监控、Windows Update 诊断、实时性能监控、安全审计、注册表启动项审计、磁盘健康检测、网络端口监控、事件日志诊断、已安装程序管理、用户会话监控、计划任务审计、文件共享审计、DNS网卡诊断、SSL证书过期检测、防火墙规则审计、服务崩溃恢复状态、系统文件修复、存储池管理、备份状态检查、Docker容器管理、K8s集群监控、自动化修复向导、性能基线与趋势分析、等保合规检查清单、远程多服务器管理、日志轮转、模块索引。只读分析+安全确认，绝不误删文件，完全免费离线运行。\"\nversion: 3.1.0\n---\n\n\n# Winskill — Windows 服务器运维工具箱\n\n## 快速开始\n\n**直接对 AI 说就行，不用记命令。**\n\n| 你想做什么 | 直接对 AI 说 |\n|-----------|-------------|\n| 看磁盘空间 | `\"帮我扫一下 D 盘大文件\"` |\n| 清理临时文件 | `\"看看我电脑的临时文件\"` |\n| 检查 IIS | `\"我的 IIS 站点还活着吗？\"` |\n| 检测重复文件 | `\"帮我找下重复文件\"` |\n| 检查服务状态 | `\"看下数据库和 IIS 服务有没有挂\"` |\n| Windows Update 状态 | `\"Windows Update 正常吗？有积压补丁吗？\"` |\n| 服务器卡顿定位 | `\"服务器变卡了，帮我看看是什么原因\"` |\n| 检查有没有被入侵 | `\"帮我查一下有没有异常登录\"` |\n| 检查可疑启动项 | `\"有没有可疑的自启动程序\"` |\n| 磁盘健康状态 | `\"硬盘还健康吗？有没有坏道\"` |\n| 网络连接监控 | `\"谁在连我的服务器\"` |\n| 系统日志哪里错了 | `\"系统日志有没有最近的错误\"` |\n| 服务器装了什么程序 | `\"看看系统安装了哪些软件\"` |\n| 谁在服务器上 | `\"当前有谁登录了服务器\"` |\n| 检查计划任务 | `\"有没有可疑的计划任务\"` |\n| 文件共享审计 | `\"有哪些共享文件夹，权限安全吗\"` |\n| DNS / 网卡诊断 | `\"DNS 解析正常吗\"` |\n| 搞不定了 | `\"我遇到报错了，帮我看看\"` |\n\n> ⚠️ **AI 必须遵守**：凡涉及删除、停止服务、修改系统的操作，必须先展示操作清单，等用户明确说\"确认执行\"后才可执行。\n\n---\n\n## 安全声明\n\n| 保护项 | 方式 |\n|-------|------|\n| 系统目录保护 | 绝不操作 `C:\\Windows`、`C:\\Program Files` 等 |\n| 删除必须确认 | 先展示受影响文件，等用户说\"确认清理\"后才执行 |\n| 回收站优先 | 删除用 `Shell.Application` 回收站 API |\n| 只读诊断 | 所有分析命令不修改任何文件/服务/注册表 |\n| 排除保护 | `pagefile.sys`、`hiberfil.sys` 等系统文件不可操作 |\n| 注册表保护 | 注册表分析只读，任何修改需双重确认 |\n| 日志读取保护 | 事件日志只读查看，不修改任何日志记录 |\n\n---\n\n## 功能模块\n\n### 📋 日志记录与轮转\n\n```powershell\nfunction Write-WinskillLog {\n    param([string]$Message)\n    $logDir = \"$env:USERPROFILE\\.workbuddy\\output\\winskill\"\n    $logFile = Join-Path $logDir \"winskill.log\"\n    New-Item -ItemType Directory -Force -Path $logDir | Out-Null\n    $timestamp = Get-Date -Format \"yyyy-MM-dd HH:mm:ss\"\n    \"$timestamp $Message\" | Out-File $logFile -Append -Encoding utf8\n    if (Test-Path $logFile) {\n        $size = (Get-Item $logFile).Length\n        if ($size -gt 10MB) {\n            $timestamp = Get-Date -Format \"yyyyMMddHHmmss\"\n            Move-Item $logFile \"winskill.log.$timestamp\" -Force\n        }\n    }\n    Get-ChildItem $logDir -Filter \"winskill.log.*\" | Where-Object {\n        $_.LastWriteTime -lt (Get-Date).AddDays(-7)\n    } | Remove-Item -Force\n}\n```\n\n### 📋 模块索引（一键列出所有可用操作）\n\n```powershell\nWrite-Host \"`n📋 Winskill 3.1.0 - 模块索引（共 30 个模块）\"\nWrite-Host (\"=\" * 60)\nWrite-Host (\"{0,-25} {1,-35}\" -f \"模块\", \"用途\")\nWrite-Host (\"-\" * 60)\n$modules = @(\n    \"模块 1: 磁盘空间分析 - 扫大文件/目录占用\",\n    \"模块 2: 大文件重复检测 - 找重复文件\",\n    \"模块 3: 临时文件安全清理 - 清理临时文件\",\n    \"模块 4: IIS 站点管理 - IIS 站点/应用池状态\",\n    \"模块 5: 服务状态监控 - Windows 服务状态\",\n    \"模块 6: 批量文件操作 - 批量重命名/移动/复制\",\n    \"模块 7: 目录磁盘使用报告 - 目录大小报告\",\n    \"模块 8: Windows Update 服务状态 - 更新服务/缓存\",\n    \"模块 9: 实时性能监控 - CPU/内存/磁盘/网络\",\n    \"模块 10: 安全审计与日志分析 - 暴力破解/特权操作\",\n    \"模块 11: 注册表与启动项安全审计 - 启动项/WMI\",\n    \"模块 12: 磁盘健康状态检测 - SMART/坏道/温度\",\n    \"模块 13: 网络连接与端口监控 - 连接/端口/防火墙\",\n    \"模块 14: Windows 事件日志诊断 - 系统/应用日志\",\n    \"模块 15: 已安装程序与补丁管理 - 程序/补丁清单\",\n    \"模块 16: 用户会话与登录状态监控 - 会话/登录\",\n    \"模块 17: 计划任务审计 - 计划任务清单\",\n    \"模块 18: 文件共享与 SMB 审计 - 共享/权限\",\n    \"模块 19: DNS 解析与网卡诊断 - DNS/网卡\",\n    \"模块 20: SSL 证书过期检测 - 证书扫描\",\n    \"模块 21: 防火墙规则审计 - 规则/高危检测\",\n    \"模块 22: 关键服务崩溃与自动恢复 - 服务崩溃记录\",\n    \"模块 23: 系统文件完整性检查与修复 - SFC/DISM\",\n    \"模块 24: 存储池与虚拟磁盘管理 - Storage Spaces\",\n    \"模块 25: Windows Server Backup 状态检查 - 备份状态\",\n    \"模块 26: Docker / K8s 容器管理 - 容器/集群\",\n    \"模块 27: 自动化修复向导 - 一键修复常见问题\",\n    \"模块 28: 性能基线 & 趋势分析 - 趋势/告警/预测\",\n    \"模块 29: 安全合规检查清单 - 等保2.0/CIS\",\n    \"模块 30: 远程多服务器管理 - 多机批量管理\"\n)\n$modules | ForEach-Object { Write-Host $_ }\nWrite-Host (\"=\" * 60)\nWrite-Host \"直接对 AI 说模块名称或用途即可调用\"\n```\n\n\n## 📌 模块导航（点击直达，共 30 个模块）\n\n**🖥️ 基础运维（1-7）：**\n[模块 1：磁盘空间分析](#module-1) · [模块 2：大文件重复检测](#module-2) · [模块 3：临时文件安全清理](#module-3) · [模块 4：IIS 站点管理](#module-4) · [模块 5：服务状态监控](#module-5) · [模块 6：批量文件操作](#module-6) · [模块 7：目录磁盘使用报告](#module-7)\n\n**🔧 进阶运维（8-18）：**\n[模块 8：Windows Update 服务状态与缓存管理](#module-8) · [模块 9：实时性能监控与进程资源分析](#module-9) · [模块 10：安全审计与日志分析](#module-10) · [模块 11：注册表与启动项安全审计](#module-11) · [模块 12：磁盘健康状态检测](#module-12) · [模块 13：网络连接与端口监控](#module-13) · [模块 14：Windows 事件日志诊断](#module-14) · [模块 15：已安装程序与补丁管理](#module-15) · [模块 16：用户会话与登录状态监控](#module-16) · [模块 17：计划任务审计](#module-17) · [模块 18：文件共享与 SMB 审计](#module-18)\n\n**🔒 安全专项（19-25）：**\n[模块 19：DNS 解析与网卡诊断](#module-19) · [模块 20：SSL 证书过期检测](#module-20) · [模块 21：Windows 防火墙规则审计](#module-21) · [模块 22：关键服务崩溃与自动恢复状态](#module-22) · [模块 23：系统文件完整性检查与修复（SFC / DISM）](#module-23) · [模块 24：存储池与虚拟磁盘管理（Storage Spaces）](#module-24) · [模块 25：Windows Server Backup 状态检查](#module-25)\n\n**🚀 高级功能（26-30）：**\n[模块 26：Docker / K8s 容器管理](#module-26) · [模块 27：自动化修复向导](#module-27) · [模块 28：性能基线 & 趋势分析](#module-28) · [模块 29：安全合规检查清单](#module-29) · [模块 30：远程多服务器管理](#module-30)\n\n---\n\n<a name=\"module-1\"></a>\n\n### 模块 1：磁盘空间分析\n\n\n\n\n\n\n<details>\n<summary>📋 展开查看：模块 1：磁盘空间分析</summary>\n\n**用途**：扫描指定路径，找出占用空间的大文件和目录。\n\n**常你说**：`\"扫一下 C 盘大文件\"` / `\"D 盘哪个最占空间\"`\n\n\n\n\n```powershell\n$scanPath = \"C:\\\"   # ← 改成你要扫的盘符或目录\n\nGet-ChildItem -Path $scanPath -Recurse -File -ErrorAction SilentlyContinue |\n    Where-Object { $_.Length -gt 100MB } |\n    Sort-Object Length -Descending |\n    Select-Object -First 50 @{N='路径';E={$_.FullName}},\n        @{N='大小(GB)';E={[math]::Round($_.Length/1GB,2)}},\n        @{N='最后修改';E={$_.LastWriteTime}}\n```\n\n\n\n**风险等级**：🟢 无（只读）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Access to the path 'xxx' is denied` | 权限不足 | 管理员身份运行 PowerShell |\n| `Could not find a part of the path` | 目录不存在 | 确认路径 |\n\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-2\"></a>\n\n### 模块 2：大文件重复检测\n\n\n\n\n\n\n<details>\n<summary>📋 展开查看：模块 2：大文件重复检测</summary>\n\n**用途**：通过 MD5 哈希找出重复文件。\n\n**常你说**：`\"找找 D 盘有没有重复文件\"`\n\n\n\n\n```powershell\n$scanPath = \"D:\\\"   # ← 扫描目标目录\n$minSize = 1MB      # ← 只检测大于 1MB 的文件\n\nGet-ChildItem -Path $scanPath -Recurse -File -ErrorAction SilentlyContinue |\n    Where-Object { $_.Length -gt $minSize } |\n    ForEach-Object {\n        $hash = (Get-FileHash $_.FullName -Algorithm MD5 -ErrorAction SilentlyContinue).Hash\n        if ($hash) {\n            [PSCustomObject]@{\n                路径 = $_.FullName\n                哈希 = $hash\n                大小MB = [math]::Round($_.Length/1MB,2)\n            }\n        }\n    } |\n    Group-Object 哈希 |\n    Where-Object { $_.Count -gt 1 } |\n    ForEach-Object { $_.Group }\n```\n\n\n\n**风险等级**：🟢 无（只读）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Exception getting file hash` | 文件正在使用 | 跳过 |\n| `The specified path is not valid` | 路径格式不对 | 检查路径 |\n\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-3\"></a>\n\n### 模块 3：临时文件安全清理\n\n\n\n\n\n\n<details>\n<summary>📋 展开查看：模块 3：临时文件安全清理</summary>\n\n**用途**：扫描安全可删的临时文件，先预览后确认再清理。\n\n**常你说**：`\"帮我清理临时文件\"` / `\"C 盘快满了帮清 temp\"`\n\n**安全清理路径**：\n\n| 路径 | 说明 | 安全天数 |\n|------|------|---------|\n| `%TEMP%\\*` | 用户临时文件 | >7 天 |\n| `C:\\Windows\\Temp\\*` | 系统临时文件 | >7 天 |\n| `C:\\Windows\\SoftwareDistribution\\Download\\*` | Windows Update 下载缓存 | 任意 |\n| `C:\\Windows\\Prefetch\\*` | 程序预取 | >30 天 |\n| `IIS Temporary Compressed Files\\*` | IIS 压缩缓存 | >1 天 |\n\n\n\n\n```powershell\n$tempPath = $env:TEMP\n$daysOld = 7\n$cutoff = (Get-Date).AddDays(-$daysOld)\n\n$tempFiles = Get-ChildItem -Path $tempPath -Recurse -ErrorAction SilentlyContinue |\n    Where-Object { $_.LastWriteTime -lt $cutoff }\n\nWrite-Host \"═══════════════════════════════════════════\"\nWrite-Host \"  📋 扫描结果: $tempPath\"\nWrite-Host \"  过期临时文件数: $($tempFiles.Count) 个\"\nWrite-Host \"═══════════════════════════════════════════\"\n\n$tempFiles | Sort-Object Length -Descending |\n    Select-Object -First 20 |\n    Select-Object @{N='文件路径';E={$_.FullName}},\n        @{N='大小(KB)';E={[math]::Round($_.Length/1KB,1)}},\n        @{N='最后修改';E={$_.LastWriteTime}} |\n    Format-Table -AutoSize\n\n$totalKB = ($tempFiles | Measure-Object -Property Length -Sum).Sum\nWrite-Host \"  预计可释放空间: $([math]::Round($totalKB/1MB,2)) MB\"\nWrite-Host \"  ⚠️ 确认删除请说 '确认清理'\"\n```\n\n\n\n\n\n\n```powershell\n# ⚠️ 仅当用户明确说「确认清理」后才执行！\nWrite-Host \"  正在移到回收站...\"\n$shell = New-Object -ComObject Shell.Application\n$rb = $shell.NameSpace(0x0a)\n$totalFiles = 0\nforeach ($f in $tempFiles) {\n    try {\n        $rb.MoveHere($f.FullName)\n        $totalFiles++\n    } catch { }\n}\nWrite-Host \"  ✅ 已完成！已将 $totalFiles 个文件移到回收站\"\nWrite-Host \"  如需彻底删除，请手动清空回收站\"\n```\n\n\n\n**风险等级**：🟡 中（需确认后删除）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Cannot find path ... does not exist` | temp 目录下某些路径不存在 | 自动跳过 |\n| `Access is denied` | 系统临时文件正在使用中 | 跳过，正常现象 |\n| `MoveHere` 失败 | 回收站操作异常 | 手动清或用其他方式 |\n\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-4\"></a>\n\n### 模块 4：IIS 站点管理\n\n\n\n\n\n\n<details>\n<summary>📋 展开查看：模块 4：IIS 站点管理</summary>\n\n**用途**：查看站点状态、应用池信息、快速重启。\n\n**常你说**：`\"我的 IIS 站点正常吗？\"` / `\"重启一下应用池\"`\n\n**前置条件**（需管理员权限）：\n\n\n```powershell\nif (-not (Get-Module -ListAvailable -Name WebAdministration)) {\n    Write-Host \"⚠️ IIS 管理工具未安装，请以管理员运行:\"\n    Install-WindowsFeature Web-Mgmt-Tools\n}\nImport-Module WebAdministration\n```\n\n\n\n\n\n```powershell\nImport-Module WebAdministration\n\nWrite-Host \"════════ IIS 站点列表 ════════\"\nGet-Website | Select-Object @{N='站点名';E={$_.Name}},\n    @{N='状态';E={$_.State}},\n    @{N='物理路径';E={$_.PhysicalPath}},\n    @{N='应用池';E={$_.ApplicationPool}},\n    @{N='绑定';E={$_.Bindings -join ';'}} |\n    Format-Table -AutoSize\n\nWrite-Host \"`n════════ 应用池状态 ════════\"\nGet-WebAppPoolState | Select-Object @{N='名';E={$_.Name}}, @{N='状态';E={$_.Value}} |\n    Format-Table -AutoSize\n```\n\n\n\n\n\n\n```powershell\n# ⚠️ 仅当用户明确确认后才执行！\n# Restart-WebSite -Name \"你的站点名\"\n```\n\n\n\n**风险等级**：🟢 查看只读 / 🟡 重启需确认\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Get-Website is not recognized` | IIS 模块未加载 | `Install-WindowsFeature Web-Mgmt-Tools` |\n| `Cannot connect to IIS` | W3SVC 服务未启动 | 管理服务 |\n| `Could not find WebAdministration` | 未装 IIS 管理工具 | 添加 Web 管理工具 |\n\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-5\"></a>\n\n### 模块 5：服务状态监控\n\n\n\n\n\n\n<details>\n<summary>📋 展开查看：模块 5：服务状态监控</summary>\n\n**用途**：一眼看出哪些关键服务挂了。\n\n**常你说**：`\"检查服务器关键服务\"` / `\"看下数据库有没有挂\"`\n\n\n\n\n```powershell\n$criticalServices = @(\n    \"W3SVC\",        # IIS\n    \"MSSQLSERVER\",  # SQL Server\n    \"MySQL80\",      # MySQL\n    \"Redis\",        # Redis\n    \"Elasticsearch\",# ES\n    \"Docker\",       # Docker\n    \"Spooler\",      # 打印\n    \"TermService\",  # 远程桌面\n    \"Nginx\",        # Nginx\n    \"Apache\",       # Apache\n    \"Tomcat\"        # Tomcat\n)\n\nWrite-Host \"════════ 关键服务状态 ════════\"\n$hasStopped = $false\nforeach ($svc in $criticalServices) {\n    $s = Get-Service -Name $svc -ErrorAction SilentlyContinue\n    if ($s) {\n        $icon = if ($s.Status -eq 'Running') { '✅' } else { '❌'; $hasStopped = $true }\n        Write-Host \"  $icon $($s.DisplayName) [$($s.Status)]\"\n    }\n}\nWrite-Host \"═══════════════════════════════\"\nif ($hasStopped) { Write-Host \"  ⚠️ 有服务未运行\" }\nelse { Write-Host \"  ✅ 所有检测服务正常\" }\n```\n\n\n\n**风险等级**：🟢 无（只读）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Cannot find any service ...` | 该服务未安装 | 自动跳过 |\n\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-6\"></a>\n\n### 模块 6：批量文件操作\n\n\n\n\n\n\n<details>\n<summary>📋 展开查看：模块 6：批量文件操作</summary>\n\n**用途**：先预览规则，再确认执行批量重命名/移动。\n\n**常你说**：`\"把所有 .log 改成 backup_1.log 格式\"`\n\n\n\n\n```powershell\n$sourceDir = \"D:\\logs\"    # ← 源目录\n$searchFilter = \"*.log\"   # ← 文件筛选\n$renamePrefix = \"backup\"  # ← 新文件名前缀\n\n$files = Get-ChildItem -Path $sourceDir -Filter $searchFilter -File\nWrite-Host \"════════ 批量重命名预览 ════════\"\nWrite-Host \"  扫描到 $($files.Count) 个 $searchFilter 文件\"\n\n$i = 1\nforeach ($f in $files) {\n    Write-Host \"  🔄 $($f.Name) → ${renamePrefix}_${i}${f.Extension}\"\n    $i++\n}\n\nWrite-Host \"`n  共 $($files.Count) 个文件将被重命名\"\nWrite-Host \"  ⚠️ 确认执行请说 '确认重命名'\"\n```\n\n\n\n\n\n\n```powershell\n# ⚠️ 仅当用户明确说「确认重命名」后才执行！\n# $i = 1\n# foreach ($f in $files) {\n#     $newName = \"${renamePrefix}_${i}${f.Extension}\"\n#     Rename-Item -Path $f.FullName -NewName $newName\n#     Write-Host \"  ✅ $($f.Name) → $newName\"\n#     $i++\n# }\n```\n\n\n\n**风险等级**：🟡 中（需确认）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Cannot rename because item already exists` | 新文件名已存在 | 加时间戳避免重名 |\n| `Access to the path is denied` | 文件锁定 | 关相关程序再试 |\n\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-7\"></a>\n\n### 模块 7：目录磁盘使用报告\n\n\n\n\n\n\n<details>\n<summary>📋 展开查看：模块 7：目录磁盘使用报告</summary>\n\n**用途**：用进度条样式一眼看出各目录占用。\n\n**常你说**：`\"看看各个目录的空间占用\"`\n\n\n\n\n```powershell\nfunction Get-DirectorySize([string]$Path) {\n    (Get-ChildItem -Path $Path -Recurse -File -ErrorAction SilentlyContinue |\n     Measure-Object -Property Length -Sum).Sum\n}\n\n$dirs = @(\"C:\\inetpub\", \"C:\\Windows\\Temp\", \"C:\\ProgramData\",\n          \"$env:TEMP\", \"C:\\Users\",\n          \"C:\\Windows\\SoftwareDistribution\", \"D:\\\")\n\nforeach ($d in $dirs) {\n    if (Test-Path $d) {\n        $sizeGB = [math]::Round((Get-DirectorySize $d) / 1GB, 2)\n        if ($sizeGB -gt 10)     { $icon = '🔴' }\n        elseif ($sizeGB -gt 5) { $icon = '🟡' }\n        else                  { $icon = '🟢' }\n        Write-Host \"  $icon $d : ${sizeGB} GB\"\n    }\n}\n```\n\n\n\n**风险等级**：🟢 无（只读）\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-8\"></a>\n\n## 🆕 模块 8：Windows Update 服务状态与缓存管理\n\n\n\n\n<details>\n<summary>📋 展开查看：🆕 模块 8：Windows Update 服务状态与缓存管理</summary>\n\n**用途**：诊断 Windows Update 是否卡住、查看已安装补丁、清理更新缓存。\n\n**常你说**：`\"Windows Update 正常吗？\"` / `\"更新缓存能不能删\"`\n\n### 8.1 查看更新服务状态与已安装补丁（只读）\n\n\n\n\n```powershell\n# 更新服务状态\nGet-Service -Name wuauserv |\n    Select-Object @{N='服务';E={$_.Name}},\n        @{N='状态';E={$_.Status}},\n        @{N='启动类型';E={$_.StartType}},\n        @{N='账号';E={$_.StartName}}\n\nWrite-Host \"\"\n\n# 已安装补丁（最近 10 个）\nGet-HotFix | Sort-Object InstalledOn -Descending |\n    Select-Object -First 10 @{N='补丁ID';E={$_.HotFixID}},\n        @{N='安装日期';E={$_.InstalledOn}}\n```\n\n\n\n### 8.2 检查 SoftwareDistribution 更新缓存大小\n\n\n\n\n```powershell\n$sd = \"C:\\Windows\\SoftwareDistribution\"\nif (Test-Path $sd) {\n    $total = (Get-ChildItem -Path $sd -Recurse -ErrorAction SilentlyContinue |\n              Measure-Object -Property Length -Sum).Sum\n    Write-Host \"  SoftwareDistribution 大小: $([math]::Round($total/1MB,1)) MB\"\n\n    $dlDir = Join-Path $sd \"Download\"\n    if (Test-Path $dlDir) {\n        $dlSize = (Get-ChildItem -Path $dlDir -Recurse -ErrorAction SilentlyContinue |\n                   Measure-Object -Property Length -Sum).Sum\n        Write-Host \"  └─ 下载缓存(Download): $([math]::Round($dlSize/1MB,1)) MB\"\n    }\n    Write-Host \"  💡 若超过 500MB 可考虑清理（需先停止 wuauserv 服务）\"\n} else {\n    Write-Host \"  ⚠️ SoftwareDistribution 目录不存在\"\n}\n```\n\n\n\n\n\n\n```powershell\n# ⚠️ 仅当用户明确说「确认清理更新缓存」后才执行！\n# Stop-Service -Name wuauserv -Force\n# Remove-Item -Path \"$sd\\Download\\*\" -Recurse -Force -ErrorAction SilentlyContinue\n# Start-Service -Name wuauserv\n# Write-Host \"  ✅ 已清理更新下载缓存，Windows Update 将重新下载所需补丁\"\n```\n\n\n\n**风险等级**：🟢 查看只读 / 🟡 清理缓存需确认\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `The service ... cannot be stopped` | 服务正在使用 | 稍后重试或重启后清理 |\n| `Access is denied` | 部分缓存文件被锁定 | 先停服务再清理 |\n\n**常见坑 & 解决**：\n\n| 场景 | 说明 |\n|-----|------|\n| Windows Update 一直不下载 | 服务挂起，重停重启动可解决 |\n| 错误码 0x80070005 | 权限问题，清理缓存可修复 |\n| 补丁安装失败 | 清理 Download 缓存后重新检查更新 |\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-9\"></a>\n\n## 🆕 模块 9：实时性能监控与进程资源分析\n\n\n\n\n<details>\n<summary>📋 展开查看：🆕 模块 9：实时性能监控与进程资源分析</summary>\n\n**用途**：定位 CPU/内存/磁盘 I/O 瓶颈，按进程排序找到罪魁祸首。\n\n**常你说**：`\"服务器变卡了，帮我看看\"` / `\"哪个进程吃内存最多\"`\n\n### 9.1 实时性能计数器（只读）\n\n\n\n\n```powershell\nGet-Counter '\\Processor(_Total)\\% Processor Time',\n              '\\Memory\\Available MBytes',\n              '\\Memory\\% Used',\n              '\\PhysicalDisk(_Total)\\% Disk Time',\n              '\\PhysicalDisk(_Total)\\Current Disk Queue Length' |\n    Select-Object -ExpandProperty CounterSamples |\n    Select-Object @{N='指标';E={$_.Path.Split('\\')[-2..-1] -join '\\'}},\n        @{N='当前值';E={[math]::Round($_.CookedValue, 1)}} |\n    Format-Table -AutoSize\n```\n\n\n\n### 9.2 内存占用 Top 10 进程\n\n\n\n\n```powershell\nGet-Process | Sort-Object WorkingSet64 -Descending |\n    Select-Object -First 10 @{N='进程名';E={$_.Name}},\n        @{N='内存(MB)';E={[math]::Round($_.WorkingSet64/1MB,1)}},\n        @{N='CPU(s)';E={[math]::Round($_.CPU,1)}} |\n    Format-Table -AutoSize\n```\n\n\n\n### 9.3 磁盘 I/O 详细统计（按进程）\n\n\n\n\n```powershell\nGet-Counter '\\Process(*)\\Read Bytes/sec',\n              '\\Process(*)\\Write Bytes/sec' |\n    Select-Object -ExpandProperty CounterSamples |\n    Where-Object { $_.CookedValue -gt 0 } |\n    Sort-Object CookedValue -Descending |\n    Select-Object -First 15 @{N='进程';E={\n        $_.Path -replace '\\\\Process\\((.*)\\)\\\\Read Bytes/sec$','$1' |\n        ForEach-Object { if ($_ -eq 'idle') { 'System Idle' } else { $_ }\n    }}, @{N='Bytes/s';E={[math]::Round($_.CookedValue, 0)}} |\n    Format-Table -AutoSize\n```\n\n\n\n\n\n\n```powershell\n# ⚠️ 仅当用户明确说「确认创建」后才执行！\n# $collector = New-DataCollectorSet -Name \"ServerPerf_$(Get-Date -Format 'yyyyMMdd')\" -Path \"C:\\PerfLogs\"\n# $collector.DataCollectors.Create(0, \"Counter\", 0,\n#     '\\Processor(_Total)\\% Processor Time',\n#     '\\Memory\\Available MBytes',\n#     '\\PhysicalDisk(_Total)\\% Disk Time'\n# )\n# $collector.Commit(\"C:\\PerfLogs\\ServerPerf\", 0, 0x01) | Out-Null\n# Write-Host \"  ✅ 已创建性能采集器，数据将保存到 C:\\PerfLogs\"\n```\n\n\n\n**风险等级**：🟢 实时查看 / 🟡 创建采集器需确认\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `The specified counter is not found` | 计数器未注册 | 运行 `lodctr /R` 重建计数器 |\n| `Access denied` | 需要管理员权限 | 提升后执行 |\n\n**常见坑 & 解决**：\n\n| 场景 | 说明 |\n|-----|------|\n| CPU 持续 >90% | 按进程排序定位异常进程 |\n| 可用内存 <500MB | 判断是否内存泄漏， IIS 应用池是否需回收 |\n| 磁盘队列长度 >2 | I/O 瓶颈，检查是否日志写入过多 |\n| 计数器全为零 | `lodctr /R` 重建性能计数器 |\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-10\"></a>\n\n## 🆕 模块 10：安全审计与日志分析\n\n\n\n\n<details>\n<summary>📋 展开查看：🆕 模块 10：安全审计与日志分析</summary>\n\n**用途**：检测暴力破解、特权操作、异常登录。\n\n**常你说**：`\"帮我查下有没有被入侵\"` / `\"有没有异常登录记录\"`\n\n### 10.1 检测暴力破解尝试（最近 24 小时）\n\n\n\n\n```powershell\n$since = (Get-Date).AddHours(-24)\n\n$failedLogins = Get-WinEvent -FilterHashtable @{\n    LogName='Security'; ID=4625; StartTime=$since\n} -ErrorAction SilentlyContinue\n\nif ($failedLogins) {\n    Write-Host \"⚠️ 最近 24h 失败登录 $($failedLogins.Count) 次`n\"\n    $failedLogins |\n        Select-Object TimeCreated,\n            @{N='账号';E={$_.Properties[5].Value}},\n            @{N='来源IP';E={$_.Properties[19].Value}} |\n        Group-Object SourceIP |\n        Sort-Object Count -Descending |\n        Select-Object -First 10 @{N='攻击源IP';E={$_.Name}},\n            @{N='尝试次数';E={$_.Count}} |\n        Format-Table -AutoSize\n    Write-Host \"  💡 尝试次数 >10 的 IP 建议加入防火墙黑名单\"\n} else {\n    Write-Host \"  ✅ 最近 24 小时无失败登录记录\"\n}\n```\n\n\n\n### 10.2 查看特权提升操作（管理员操作审计）\n\n\n\n\n```powershell\n$since = (Get-Date).AddHours(-24)\n\nWrite-Host \"════════ 特权操作（4672）════════\"\nGet-WinEvent -FilterHashtable @{\n    LogName='Security'; ID=4672; StartTime=$since\n} -ErrorAction SilentlyContinue |\n    Select-Object TimeCreated,\n        @{N='用户';E={$_.Properties[1].Value}},\n        @{N='特权';E={$_.Properties[2..($_.Properties.Count-1)].Value -join ', '}} |\n    Format-Table -AutoSize\n```\n\n\n\n### 10.3 本地管理员组成员检查\n\n\n\n\n```powershell\nWrite-Host \"════════ 本地管理员组成员 ════════\"\nGet-LocalGroupMember -Group \"Administrators\" |\n    Select-Object @{N='用户名';E={$_.Name}},\n        @{N='来源';E={$_.PrincipalSource}} |\n    Format-Table -AutoSize\n```\n\n\n\n\n\n\n```powershell\n# ⚠️ 仅当用户明确说「确认导出」后才执行！\n# $logPath = \"C:\\Logs\\Security_$(Get-Date -Format 'yyyyMMdd').evtx\"\n# if (-not (Test-Path \"C:\\Logs\")) { New-Item -ItemType Directory -Path \"C:\\Logs\" -Force }\n# wevtutil epl Security $logPath\n# Write-Host \"  ✅ 安全日志已导出到: $logPath\"\n```\n\n\n\n**风险等级**：🟢 只读审计 / 🟡 导出需确认\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `No events were found ...` | 没有符合条件的日志 | 正常，说明期间无异常 |\n| `The requested operation cannot be performed on a file ...` | 日志文件被占用 | 复制到另一路径导出 |\n| `Get-LocalGroupMember` 报错 | 需要管理员权限 | 提升执行 |\n\n**常见坑 & 解决**：\n\n| 场景 | 说明 |\n|-----|------|\n| 某 IP 失败登录 >100 次 | 暴力破解，建议防火墙封禁 |\n| 4672 事件频繁 | 有人在频繁执行管理员操作，需排查 |\n| 管理员组成员异常多了不认识账号 | 立即排查是否被入侵后留后门，删非法账号 |\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-11\"></a>\n\n## 🆕 模块 11：注册表与启动项安全审计\n\n\n\n\n<details>\n<summary>📋 展开查看：🆕 模块 11：注册表与启动项安全审计</summary>\n\n**用途**：检测恶意持久化机制（注册表自启动、计划任务、WMI 订阅）。\n\n**常你说**：`\"有没有可疑的自启动程序\"` / `\"检查一下持久化威胁\"`\n\n> ⚠️ **本模块所有操作均为只读分析，绝不修改注册表或删除任何键值。**\n\n### 11.1 经典自启动注册表位置扫描\n\n\n\n\n```powershell\n$runKeys = @(\n    \"HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\",\n    \"HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce\",\n    \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\",\n    \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce\",\n    \"HKLM:\\Software\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\"\n)\n\nWrite-Host \"════════ 自启动注册表项 ════════\"\nforeach ($key in $runKeys) {\n    if (Test-Path $key) {\n        Write-Host \"`n  📁 $($key.Split('\\')[-1..-1] -join '\\')\"\n        Get-ItemProperty $key -ErrorAction SilentlyContinue |\n            Get-Member -MemberType NoteProperty |\n            Where-Object { $_.Name -notlike 'PS*' } |\n            ForEach-Object {\n                $val = (Get-ItemProperty $key -Name $_.Name -ErrorAction SilentlyContinue).$($_.Name)\n                Write-Host \"    🔹 $($_.Name) = $val\"\n            }\n    }\n}\nWrite-Host \"`n═══════════════════════════════\"\nWrite-Host \"  💡 不认识的程序请搜索确认，不要直接删除\"\n```\n\n\n\n### 11.2 计划任务审计\n\n\n\n\n```powershell\nWrite-Host \"════════ 计划任务列表 ════════\"\nGet-ScheduledTask | Where-Object { $_.State -ne 'Disabled' } |\n    Select-Object @{N='任务名';E={$_.TaskName}},\n        @{N='状态';E={$_.State}},\n        @{N='作者';E={$_.Author}},\n        @{N='运行方式';E={$_.Principal.UserId}} |\n    Format-Table -AutoSize\n\nWrite-Host \"`n════════ 最近修改的任务 ════════\"\nGet-ScheduledTask | Sort-Object LastWriteTime -Descending |\n    Select-Object -First 10 @{N='任务名';E={$_.TaskName}},\n        @{N='修改时间';E={$_.LastWriteTime}} |\n    Format-Table -AutoSize\n```\n\n\n\n### 11.3 WMI 持久化检测\n\n\n\n\n```powershell\nWrite-Host \"════════ WMI 事件订阅 ════════\"\ntry {\n    $wmiSubs = Get-CimInstance -Namespace root\\subscription -ClassName __EventFilter -ErrorAction SilentlyContinue\n    if ($wmiSubs) {\n        $wmiSubs | Select-Object @{N='名称';E={$_.Name}},\n            @{N='查询';E={$_.Query}} |\n            Format-Table -AutoSize\n    } else {\n        Write-Host \"  ✅ 未发现 WMI 事件订阅\"\n    }\n} catch {\n    Write-Host \"  ⚠️ WMI 查询失败，可能需要管理员权限\"\n}\n```\n\n\n\n### 11.4 系统服务异常检测\n\n\n\n\n```powershell\nWrite-Host \"════════ 非微软服务列表 ════════\"\nGet-Service | Where-Object {\n    $_.DisplayName -notlike '*Microsoft*' -and\n    $_.DisplayName -notlike '*Windows*' -and\n    $_.DisplayName -notlike '*Intel*' -and\n    $_.DisplayName -notlike '*NVIDIA*' -and\n    $_.DisplayName -notlike '*AMD*' -and\n    $_.DisplayName -notlike '*Realtek*' -and\n    $_.DisplayName -notlike '*HP*' -and\n    $_.DisplayName -notlike '*Dell*'\n} | Select-Object @{N='服务名';E={$_.Name}},\n    @{N='显示名';E={$_.DisplayName}},\n    @{N='状态';E={$_.Status}},\n    @{N='启动类型';E={$_.StartType}} |\n    Format-Table -AutoSize\n```\n\n\n\n**风险等级**：🟢 无（只读审计）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Access to the path is denied` | 权限不足 | 管理员身份运行 |\n| `Requested registry access is not allowed` | 注册表权限限制 | 提升权限执行 |\n| `Get-CimInstance` 报错 | WMI 服务未启动 | 检查 Winmgmt 服务 |\n\n**常见坑 & 解决**：\n\n| 场景 | 说明 |\n|-----|------|\n| Run 键值超多（>20个） | 正常软件也会注册，重点排查不认识的 |\n| WMI 订阅存在未知项 | 可能是恶意软件持久化，需进一步分析 |\n| 服务名随机字符串 | 典型恶意软件特征，需立即排查 |\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-12\"></a>\n\n## 🆕 模块 12：磁盘健康状态检测\n\n\n\n\n<details>\n<summary>📋 展开查看：🆕 模块 12：磁盘健康状态检测</summary>\n\n**用途**：检测磁盘 SMART 状态、坏道预警、磁盘寿命预测。\n\n**常你说**：`\"硬盘还健康吗？\"` / `\"有没有坏道\"` / `\"磁盘寿命还剩多久\"`\n\n> ⚠️ **本模块所有操作均为只读检测，不会执行磁盘修复或擦除操作。**\n\n### 12.1 SMART 状态概览\n\n\n\n\n```powershell\nWrite-Host \"════════ 磁盘 SMART 状态 ════════\"\nGet-PhysicalDisk | Select-Object @{N='磁盘';E={$_.FriendlyName}},\n    @{N='状态';E={$_.HealthStatus}},\n    @{N='使用时长';E={[math]::Round($_.UsageHours,0)}},\n    @{N='温度(°C)';E={$_.Temperature}},\n    @{N='剩余寿命%';E={$_.RemainingLifetimePercent}} |\n    Format-Table -AutoSize\n```\n\n\n\n### 12.2 磁盘坏道与错误计数\n\n\n\n\n```powershell\nWrite-Host \"════════ 磁盘错误统计 ════════\"\nGet-PhysicalDisk | ForEach-Object {\n    $disk = $_\n    $errors = Get-StorageReliabilityCounter -PhysicalDisk $disk -ErrorAction SilentlyContinue\n    if ($errors) {\n        [PSCustomObject]@{\n            磁盘 = $disk.FriendlyName\n            读取错误 = $errors.ReadErrorsTotal\n            写入错误 = $errors.WriteErrorsTotal\n            重映射扇区 = $errors.ReallocatedSectors\n            待映射扇区 = $errors.PendingSectors\n            不可修复错误 = $errors.UncorrectableErrors\n        }\n    }\n} | Format-Table -AutoSize\n\nWrite-Host \"`n  💡 重映射扇区 >0 或待映射扇区 >0 表示磁盘开始老化\"\nWrite-Host \"  💡 不可修复错误 >0 建议立即备份数据并更换磁盘\"\n```\n\n\n\n### 12.3 磁盘温度监控\n\n\n\n\n```powershell\nWrite-Host \"════════ 磁盘温度监控 ════════\"\nGet-PhysicalDisk | ForEach-Object {\n    $temp = $_.Temperature\n    if ($temp -gt 50)     { $icon = '🔴' }\n    elseif ($temp -gt 40) { $icon = '🟡' }\n    else                  { $icon = '🟢' }\n    [PSCustomObject]@{\n        磁盘 = $_.FriendlyName\n        温度 = \"${temp}°C\"\n        状态 = $icon\n    }\n} | Format-Table -AutoSize\n\nWrite-Host \"`n  💡 温度 >50°C 需检查散热，>60°C 立即停机检查\"\n```\n\n\n\n### 12.4 磁盘 I/O 延迟分析\n\n\n\n\n```powershell\nWrite-Host \"════════ 磁盘 I/O 延迟 ════════\"\nGet-Counter '\\PhysicalDisk(*)\\Avg. Disk sec/Read',\n              '\\PhysicalDisk(*)\\Avg. Disk sec/Write' |\n    Select-Object -ExpandProperty CounterSamples |\n    Where-Object { $_.CookedValue -gt 0 } |\n    Select-Object @{N='磁盘';E={\n        $_.Path -replace '\\\\PhysicalDisk\\((.*)\\)\\\\.*$','$1'\n    }}, @{N='平均延迟(ms)';E={[math]::Round($_.CookedValue * 1000, 2)}} |\n    Format-Table -AutoSize\n\nWrite-Host \"`n  💡 读延迟 >20ms 或写延迟 >20ms 表示磁盘性能下降\"\n```\n\n\n\n**风险等级**：🟢 无（只读检测）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `No MSFT_PhysicalDisk ...` | 系统不支持存储诊断 | 需 Windows Server 2016+ |\n| `Temperature` 属性不存在 | 磁盘不支持温度传感器 | 用第三方工具检测 |\n| `Get-StorageReliabilityCounter` 报错 | 需要管理员权限 | 提升执行 |\n\n**常见坑 & 解决**：\n\n| 场景 | 说明 |\n|-----|------|\n| SMART 状态显示 \"Warning\" | 磁盘开始老化，立即备份数据 |\n| 重映射扇区持续增长 | 磁盘寿命将尽，尽快更换 |\n| I/O 延迟突然飙升 | 可能磁盘故障前兆，检查 SMART |\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-13\"></a>\n\n## 🆕 模块 13：网络连接与端口监控\n\n\n\n\n<details>\n<summary>📋 展开查看：🆕 模块 13：网络连接与端口监控</summary>\n\n**用途**：检测异常网络连接、监听端口、可疑外连行为。\n\n**常你说**：`\"谁在连我的服务器\"` / `\"有没有异常外连\"` / `\"检查监听端口\"`\n\n> ⚠️ **本模块所有操作均为只读检测，不会修改防火墙规则或终止连接。**\n\n### 13.1 活动网络连接概览\n\n\n\n\n```powershell\nWrite-Host \"════════ 活动网络连接 ════════\"\nGet-NetTCPConnection -State Established -ErrorAction SilentlyContinue |\n    Select-Object @{N='本地地址';E={$_.LocalAddress}},\n        @{N='本地端口';E={$_.LocalPort}},\n        @{N='远程地址';E={$_.RemoteAddress}},\n        @{N='远程端口';E={$_.RemotePort}},\n        @{N='状态';E={$_.State}},\n        @{N='进程';E={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}} |\n    Sort-Object RemoteAddress |\n    Format-Table -AutoSize\n```\n\n\n\n### 13.2 监听端口审计\n\n\n\n\n```powershell\nWrite-Host \"════════ 监听端口列表 ════════\"\nGet-NetTCPConnection -State Listen -ErrorAction SilentlyContinue |\n    Select-Object @{N='本地地址';E={$_.LocalAddress}},\n        @{N='监听端口';E={$_.LocalPort}},\n        @{N='进程';E={\n            $proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue\n            if ($proc) { \"$($proc.Name) (PID: $($proc.Id))\" } else { \"未知\" }\n        }} |\n    Sort-Object LocalPort |\n    Format-Table -AutoSize\n```\n\n\n\n### 13.3 可疑外连检测（高频连接分析）\n\n\n\n\n```powershell\nWrite-Host \"════════ 高频外连目标 ════════\"\nGet-NetTCPConnection -State Established -ErrorAction SilentlyContinue |\n    Group-Object RemoteAddress |\n    Where-Object { $_.Count -gt 5 } |\n    Sort-Object Count -Descending |\n    Select-Object -First 15 @{N='远程IP';E={$_.Name}},\n        @{N='连接数';E={$_.Count}},\n        @{N='进程';E={\n            $proc = Get-Process -Id ($_.Group[0].OwningProcess) -ErrorAction SilentlyContinue\n            if ($proc) { $proc.Name } else { \"未知\" }\n        }} |\n    Format-Table -AutoSize\n\nWrite-Host \"`n  💡 连接数 >20 的 IP 需重点排查是否为恶意外连\"\n```\n\n\n\n### 13.4 防火墙规则审计\n\n\n\n\n```powershell\nWrite-Host \"════════ 防火墙入站规则 ════════\"\nGet-NetFirewallRule -Direction Inbound -Enabled True -ErrorAction SilentlyContinue |\n    Where-Object { $_.Action -eq 'Allow' } |\n    Select-Object @{N='规则名';E={$_.DisplayName}},\n        @{N='操作';E={$_.Action}},\n        @{N='本地端口';E={$_.LocalPort}},\n        @{N='远程地址';E={$_.RemoteAddress}} |\n    Format-Table -AutoSize\n```\n\n\n\n**风险等级**：🟢 无（只读检测）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Get-NetTCPConnection` 报错 | 需要管理员权限 | 提升执行 |\n| `Get-NetFirewallRule` 报错 | 防火墙服务未启动 | 检查 mpssvc 服务 |\n| `OwningProcess` 为 0 | 系统进程，正常 | 无需处理 |\n\n**常见坑 & 解决**：\n\n| 场景 | 说明 |\n|-----|------|\n| 未知进程监听 80/443 端口 | 可能是 Web 服务或恶意软件，需排查 |\n| 大量外连到同一 IP | 可能是 C2 通信，立即断网排查 |\n| 防火墙规则异常宽松 | 建议收紧为最小权限原则 |\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-14\"></a>\n\n## 🆕 模块 14：Windows 事件日志诊断\n\n\n\n\n<details>\n<summary>📋 展开查看：🆕 模块 14：Windows 事件日志诊断</summary>\n\n**用途**：快速定位系统错误、警告，按时间/级别筛选关键日志。\n\n**常你说**：`\"系统日志有没有最近错误\"` / `\"最近系统出了什么问题\"` / `\"看看日志\"`\n\n> ⚠️ **本模块仅读取日志，不会修改或清除日志文件。**\n\n### 14.1 系统最近错误日志（最近 2 小时）\n\n\n\n\n```powershell\n$since = (Get-Date).AddHours(-2)\n\nWrite-Host \"════════ 最近 2 小时系统日志（错误/警告）════════\"\nGet-WinEvent -FilterHashtable @{\n    LogName='System';Level=2,3;StartTime=$since\n} -ErrorAction SilentlyContinue |\n    Select-Object @{N='时间';E={$_.TimeCreated}},\n        @{N='来源';E={$_.Message.Split(\"`r`n\")[0] -replace '^.*?: '}},\n        @{N='级别';E={if ($_.Level -eq 2) { '❌错误' } else { '⚠️警告' }}} |\n    Select-Object -First 30 |\n    Format-Table -AutoSize -Wrap\n```\n\n\n\n### 14.2 应用程序错误日志\n\n\n\n\n```powershell\n$since = (Get-Date).AddHours(-24)\n\nWrite-Host \"════════ 最近 24 小时应用程序错误 ════════\"\nGet-WinEvent -FilterHashtable @{\n    LogName='Application'; Level=2; StartTime=$since\n} -ErrorAction SilentlyContinue |\n    Select-Object @{N='时间';E={$_.TimeCreated}},\n        @{N='来源';E={$_.ProviderName}},\n        @{N='错误摘要';E={\n            ($_.Message -replace \"`r`n\",' ' | Select-Object -First 120)\n        }} |\n    Select-Object -First 20 |\n    Format-Table -AutoSize -Wrap\n```\n\n\n\n### 14.3 关键系统事件扫描（蓝屏/重启/故障）\n\n\n\n\n```powershell\nWrite-Host \"════════ 关键系统事件（最近 7 天）════════\"\nGet-WinEvent -FilterHashtable @{\n    LogName='System';\n    ID=1074, 6005, 6006, 6008, 6009, 41, 1001, 1002;\n    StartTime=(Get-Date).AddDays(-7)\n} -ErrorAction SilentlyContinue |\n    Select-Object @{N='时间';E={$_.TimeCreated}},\n        @{N='事件ID';E={$_.Id}},\n        @{N='说明';E={\n            switch ($_.Id) {\n                1074 {'系统关机/重启 (User initiated)'}\n                6005 {'系统启动'}\n                6006 {'系统正常关机'}\n                6008 {'非正常关机 (意外断电/崩溃)'}\n                6009 {'系统启动 (新会话)'}\n                41  {'Kernel-Power 重启 (无干净关机)'}\n                1001{'BugCheck (蓝屏)'}\n                1002{'应用程序挂起/无响应'}\n                default {$_.Message.Split(\"`r`n\")[0]}\n            }\n        }} |\n    Format-Table -AutoSize -Wrap\n```\n\n\n\n### 14.4 Setup 日志审计（最近 7 天）\n\n\n\n\n```powershell\nWrite-Host \"════════ Setup 最近 7 天事件 ════════\"\nGet-WinEvent -FilterHashtable @{\n    LogName='Setup';\n    StartTime=(Get-Date).AddDays(-7)\n} -ErrorAction SilentlyContinue |\n    Select-Object @{N='时间';E={$_.TimeCreated}},\n        @{N='来源';E={$_.ProviderName}},\n        @{N='摘要';E={\n            ($_.Message -replace \"`r`n\",' ' | Select-Object -First 120)\n        }} |\n    Select-Object -First 15 |\n    Format-Table -AutoSize -Wrap\n```\n\n\n\n**风险等级**：🟢 无（只读阅读）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `No events were found ...` | 没有符合条件的日志 | 正常，说明期间无异常 |\n| `RPC server is unavailable` | 事件日志服务未运行 | 检查 EventLog 服务 |\n| `Access denied` | 权限不足 | 管理员身份执行 |\n\n**常见坑 & 解决**：\n\n| 场景 | 说明 |\n|-----|------|\n| 每天大量 Error 日志 | 说明存在持续性故障，需逐条排查来源 |\n| 非正常关机 (6008) | 可能存在硬件/电源问题 |\n| 蓝屏 (1001) | 记录蓝屏代码，排查驱动/硬件 |\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-15\"></a>\n\n## 🆕 模块 15：已安装程序与补丁管理\n\n\n\n\n<details>\n<summary>📋 展开查看：🆕 模块 15：已安装程序与补丁管理</summary>\n\n**用途**：查看所有已安装的软件、补丁，检测缺失或不一致情况。\n\n**常你说**：`\"看看系统安装了哪些软件\"` / `\"服务器装了什么程序\"` / `\"补丁检查\"`\n\n> ⚠️ **本模块仅读，不会卸载/安装/修改任何软件。**\n\n### 15.1 已安装程序清单\n\n\n\n\n```powershell\nWrite-Host \"════════ 已安装程序清单 ════════\"\nGet-ItemProperty \"HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*\" -ErrorAction SilentlyContinue |\n    Where-Object { $_.DisplayName -and $_.UninstallString -notlike '*{*' } |\n    Select-Object @{N='程序名';E={$_.DisplayName}},\n        @{N='版本';E={$_.DisplayVersion}},\n        @{N='安装日期';E={$_.InstallDate}},\n        @{N='大小';E={if($_.EstimatedSize){[math]::Round($_.EstimatedSize/1MB,1)}else{'?'}}} |\n    Sort-Object DisplayName |\n    Format-Table -AutoSize\n```\n\n\n\n### 15.2 已安装 Windows 补丁\n\n\n\n\n```powershell\nWrite-Host \"════════ 已安装 Windows 补丁 ════════\"\nGet-HotFix | Sort-Object InstalledOn -Descending |\n    Select-Object @{N='补丁ID';E={$_.HotFixID}},\n        @{N='安装日期';E={$_.InstalledOn}},\n        @{N='描述';E={$_.Description}} |\n    Format-Table -AutoSize\n```\n\n\n\n### 15.3 安装时间线分析\n\n\n\n\n```powershell\nWrite-Host \"════════ 最近安装的软件 ════════\"\nGet-ItemProperty \"HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*\" -ErrorAction SilentlyContinue |\n    Where-Object { $_.InstallDate } |\n    Sort-Object InstallDate -Descending |\n    Select-Object -First 20 @{N='程序名';E={$_.DisplayName}},\n        @{N='版本';E={$_.DisplayVersion}},\n        @{N='安装日期';E={$_.InstallDate}} |\n    Format-Table -AutoSize\n```\n\n\n\n### 15.4 补丁对比（检测缺失）\n\n\n\n\n```powershell\n$hotfixes = Get-HotFix -ErrorAction SilentlyContinue | Select-Object -ExpandProperty HotFixID\n$currentBuild = [System.Environment]::OSVersion.Version\n$expectedPatches = @()\n\n# 检测 Windows 10/11 常见缺失补丁\nif ($currentBuild.Major -ge 10) {\n    $kbToCheck = @(\n        \"KB5034441\",  # Secure Boot DBX\n        \"KB5036897\",  # 最新 .NET\n        \"KB5037771\"   # 最新累积\n    )\n    foreach ($kb in $kbToCheck) {\n        if ($hotfixes -notcontains $kb) {\n            $expectedPatches += \"$kb - 缺失\"\n        }\n    }\n}\n\nWrite-Host \"════════ 补丁一致性检查 ════════\"\nWrite-Host \"  当前版本: $($currentBuild.Major).$($currentBuild.Minor).$($currentBuild.Build)\"\nWrite-Host \"\"\nif ($expectedPatches.Count -gt 0) {\n    Write-Host \"  ⚠️ 缺失补丁:\"\n    foreach ($p in $expectedPatches) { Write-Host \"    ❌ $p\" }\n} else {\n    Write-Host \"  ✅ 常用补丁均已安装\"\n}\n```\n\n\n\n**风险等级**：🟢 无（只读阅读）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Requested registry access is not allowed` | 部分注册表权限限制 | 管理员身份执行 |\n| `Get-HotFix` 报错 | 需要管理员权限 | 管理员身份执行 |\n\n**常见坑 & 解决**：\n\n| 场景 | 说明 |\n|-----|------|\n| 某台服务器明显比其他机器少很多补丁 | 可能 WSUS/自动更新未运行 |\n| 安装时间线上出现未知日期的软件 | 可能未经授权安装，需排查 |\n| KB 补丁安装失败 | Windows Update 服务或缓存异常 |\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-16\"></a>\n\n## 🆕 模块 16：用户会话与登录状态监控\n\n\n\n\n<details>\n<summary>📋 展开查看：🆕 模块 16：用户会话与登录状态监控</summary>\n\n**用途**：监控当前登录的用户、远程会话、僵尸会话、账户状态。\n\n**常你说**：`\"谁在服务器上\"` / `\"有没有异常登录\"` / `\"查看远程会话\"`\n\n> ⚠️ **本模块仅读，不会结束会话、锁定账户或修改密码策略。**\n\n### 16.1 当前登录用户概览\n\n\n\n\n```powershell\nWrite-Host \"════════ 当前登录用户 ════════\"\nGet-CimInstance Win32_LogonSession | Where-Object { $_.LogonType -ne 0 } |\n    Select-Object @{N='用户名';E={\n        $user = Get-CimInstance Win32_ComputerSystem | Select-Object UserName\n        $user.UserName ?? \"未知\"\n    }},\n    @{N='会话ID';E={$_.LogonId}},\n    @{N='登录类型';E={\n        switch ($_.LogonType) {\n            2 {'交互 (本地登录)'}\n            3 {'网络登录'}\n            4 {'批处理'}\n            5 {'服务'}\n            7 {'解锁'}\n            8 {'网络明文'}\n            9 {'新凭据'}\n            10 {'远程交互 (RDP)'}\n            11 {'缓存交互'}\n            default {\"其他 ($($_.LogonType))\"}\n        }\n    }},\n    @{N='登录时间';E={$_.StartTime}} |\n    Format-Table -AutoSize\n```\n\n\n\n### 16.2 远程桌面会话监控\n\n\n\n\n```powershell\nWrite-Host \"════════ 远程桌面会话 (RDP) ════════\"\nGet-CimInstance Win32_LogonSession | Where-Object { $_.LogonType -eq 10 } |\n    Select-Object @{N='用户名';E={\n        $user = Get-CimInstance Win32_ComputerSystem | Select-Object UserName\n        $user.UserName ?? \"未知\"\n    }},\n    @{N='会话ID';E={$_.LogonId}},\n    @{N='登录时间';E={$_.StartTime}},\n    @{N='空闲时间(分钟)';E={\n        if ($_.StartTime) {\n            [math]::Round(((Get-Date) - $_.StartTime).TotalMinutes, 0)\n        } else { 0 }\n    }} |\n    Format-Table -AutoSize\nWrite-Host \"`n💡 空闲 >60 分钟的会话可能为僵尸会话\"\n```\n\n\n\n### 16.3 异常登录检测（多 IP / 异地登录）\n\n\n\n\n```powershell\nWrite-Host \"════════ 最近 7 天的登录来源 ════════\"\nGet-WinEvent -FilterHashtable @{\n    LogName='Security';\n    ID=4624;\n    StartTime=(Get-Date).AddDays(-7)\n} -ErrorAction SilentlyContinue |\n    Where-Object { $_.Properties[18].Value -ne '-' } |\n    Select-Object @{N='登录时间';E={$_.TimeCreated}},\n        @{N='用户名';E={$_.Properties[5].Value}},\n        @{N='来源IP';E={$_.Properties[18].Value}},\n        @{N='登录类型';E={\n            switch ($_.Properties[8].Value) {\n                2 {'交互(本地)'}\n                3 {'网络'}\n                10 {'远程(RDP)'}\n                default {\"其他\"}\n            }\n        }} |\n    Group-Object SourceIP |\n    Sort-Object Count -Descending |\n    Select-Object -First 10 @{N='来源IP';E={$_.Name}},\n        @{N='登录次数';E={$_.Count}},\n        @{N='最近登录';E={$_.Group[0].TimeCreated}} |\n    Format-Table -AutoSize\n\nWrite-Host \"`n💡 任何未知来源IP 的登录都值得警惕\"\n```\n\n\n\n### 16.4 系统账户状态检查\n\n\n\n\n```powershell\nWrite-Host \"════════ 本地用户账户状态 ════════\"\nGet-LocalUser | Where-Object { $_.Enabled -eq $true } |\n    Select-Object @{N='账户名';E={$_.Name}},\n        @{N='状态';E={if ($_.Enabled) {'启用'}else{'禁用'}}},\n        @{N='最后登录';E={$_.LastLogon}},\n        @{N='密码过期';E={\n            if ($_.PasswordExpires) { $_.PasswordExpires } else { '永不过期 ⚠️' }\n        }},\n        @{N='需要密码';E={if ($_.PasswordRequired) {'是'}else{'否 ⚠️'}}} |\n    Format-Table -AutoSize\n\nWrite-Host \"`n⚠️ 标记的账户存在安全风险：无密码或密码永不过期\"\n```\n\n\n\n**风险等级**：🟢 无（只读监控）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Get-LocalUser` 报错 | 需要管理员权限 | 管理员身份执行 |\n| `Get-CimInstance` 报错 | WMI 未启动 | 检查 Winmgmt |\n| `No events found` | 没有相关日志 | 正常 |\n\n**常见坑 & 解决**：\n\n| 场景 | 说明 |\n|-----|------|\n| 多个 RDP 会话来自同一 IP | 可能正常（NAT），也可能为多人共用账户 |\n| Guest 账户启用 | 不必要的安全风险，建议禁用 |\n| 僵尸 RDP 会话 | 占用资源，闲置超时后应自动断开 |\n| 密码永不过期 | 合规风险，建议设置密码策略 |\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-17\"></a>\n\n## 🆕 模块 17：计划任务审计\n\n\n\n\n<details>\n<summary>📋 展开查看：🆕 模块 17：计划任务审计</summary>\n\n**用途**：审计所有计划任务，检测可疑的持久化行为（恶意软件常用的自启动方式）。\n\n**常你说**：`\"有没有可疑计划任务\"` / `\"检查计划任务\"` / `\"有没有凌晨执行的任务\"`\n\n> ⚠️ **本模块仅读，不会创建/删除/修改任何计划任务。**\n\n### 17.1 所有计划任务清单\n\n\n\n\n```powershell\nWrite-Host \"════════ 所有计划任务 ════════\"\n$tasks = Get-ScheduledTask | Where-Object { $_.State -ne 'Disabled' }\n$total = ($tasks | Measure-Object).Count\nWrite-Host \"  总数: $total 个启用的任务`n\"\n\n$tasks | Select-Object @{N='任务名';E={$_.TaskName}},\n    @{N='路径';E={$_.TaskPath}},\n    @{N='状态';E={$_.State}},\n    @{N='触发器';E={\n        $info = Get-ScheduledTaskInfo -TaskName $_.TaskName -TaskPath $_.TaskPath -ErrorAction SilentlyContinue\n        if ($info.LastRunTime) { \"上次: $($info.LastRunTime)\" } else { \"从未执行\" }\n    }} |\n    Sort-Object TaskPath, TaskName |\n    Format-Table -AutoSize\n```\n\n\n\n### 17.2 异常计划任务检测（凌晨执行 / 隐藏窗口 / 临时目录）\n\n\n\n\n```powershell\nWrite-Host \"════════ 异常计划任务检测 ════════\"\n$suspicious = @()\n$tasks = Get-ScheduledTask | Where-Object { $_.State -ne 'Disabled' }\n\nforeach ($task in $tasks) {\n    $score = 0\n    $reasons = @()\n    $taskInfo = Get-ScheduledTaskInfo -TaskName $task.TaskName -TaskPath $task.TaskPath -ErrorAction SilentlyContinue\n    $lastRun = if ($taskInfo.LastRunTime) { $taskInfo.LastRunTime } else { $null }\n\n    # 检测1: 凌晨执行 (0:00-5:00)\n    # 通过检查 Actions 中的命令行参数\n    $actions = $task.Actions\n    foreach ($action in $actions) {\n        $argStr = \"$($action.Arguments)\" + \"$($action.Execute)\"\n        if ($argStr -match '(-WindowStyle\\s+Hidden|/hidden|-w\\s+hidden|-hide|/background|/min|-NoLogo\\s+-NonInteractive\\s+-WindowStyle\\s+Hidden)') {\n            $score += 2\n            $reasons += \"隐藏窗口执行\"\n        }\n        if ($argStr -match '(\\\\Temp\\\\|\\\\TMP\\\\|\\\\AppData\\\\Local\\\\Temp\\\\)') {\n            $score += 3\n            $reasons += \"从临时目录执行\"\n        }\n        if ($argStr -match '((?:powershell|cmd|wscript|cscript|rundll32|mshta|regsvr32).*?(?:-enc|-e\\s|IEX|Invoke-Expression|DownloadString|FromBase64String|eval))') {\n            $score += 4\n            $reasons += \"可疑命令特征(编码/下载)\"\n        }\n    }\n\n    # 检测2: 无描述信息的任务\n    if (-not $task.Description -or $task.Description -eq '') {\n        $score += 1\n        $reasons += \"无描述信息\"\n    }\n\n    if ($score -ge 3) {\n        $suspicious += [PSCustomObject]@{\n            任务名 = $task.TaskName\n            路径 = $task.TaskPath\n            风险分 = $score\n            原因 = ($reasons -join ', ')\n            上次运行 = $lastRun\n        }\n    }\n}\n\nif ($suspicious.Count -gt 0) {\n    $suspicious | Sort-Object 风险分 -Descending |\n        Format-Table -AutoSize -Wrap\n    Write-Host \"`n🔴 以上任务存在可疑特征，建议逐条排查\"\n} else {\n    Write-Host \"✅ 未发现明显可疑的计划任务\"\n}\n```\n\n\n\n### 17.3 按触发条件分类（开机自启 / 定时 / 用户登录触发）\n\n\n\n\n```powershell\nWrite-Host \"════════ 计划任务按触发类型分类 ════════`n\"\n\n# 开机自启\nWrite-Host \"═══ 开机/系统启动时触发 ═══\"\nGet-ScheduledTask | Where-Object {\n    $_.Triggers | Where-Object { $_.CimClass.CimClassName -match 'BootTrigger|StartupTrigger' }\n} | Select-Object -First 15 @{N='任务名';E={$_.TaskName}},\n    @{N='路径';E={$_.TaskPath}},\n    @{N='触发器';E={\n        ($_.Triggers | ForEach-Object { $_.CimClass.CimClassName }) -join ', '\n    }} |\n    Format-Table -AutoSize\n\nWrite-Host \"`n═══ 用户登录时触发 ═══\"\nGet-ScheduledTask | Where-Object {\n    $_.Triggers | Where-Object { $_.CimClass.CimClassName -match 'LogonTrigger' }\n} | Select-Object -First 15 @{N='任务名';E={$_.TaskName}},\n    @{N='路径';E={$_.TaskPath}},\n    @{N='触发器';E={\n        ($_.Triggers | ForEach-Object { $_.CimClass.CimClassName }) -join ', '\n    }} |\n    Format-Table -AutoSize\n\nWrite-Host \"`n═══ 定时/周期性触发 (数量最多) ═══\"\n$timeTasks = Get-ScheduledTask | Where-Object {\n    $_.Triggers | Where-Object { $_.CimClass.CimClassName -match 'TimeTrigger|DailyTrigger|WeeklyTrigger|MonthlyTrigger' }\n}\nWrite-Host \"  总数: $(($timeTasks | Measure-Object).Count) 个\"\n```\n\n\n\n### 17.4 非 Microsoft 创建的任务\n\n\n\n\n```powershell\nWrite-Host \"════════ 非 Microsoft 创建的计划任务 ════════\"\n$nonMsTasks = Get-ScheduledTask | Where-Object {\n    $_.TaskPath -notmatch '\\\\\\\\Microsoft\\\\\\\\' -and $_.State -ne 'Disabled'\n}\n\nif ($nonMsTasks) {\n    $nonMsTasks | Select-Object @{N='任务名';E={$_.TaskName}},\n        @{N='路径';E={$_.TaskPath}},\n        @{N='状态';E={$_.State}},\n        @{N='描述';E={\n            if ($_.Description) { $_.Description.Substring(0, [Math]::Min(60, $_.Description.Length)) }\n            else { '(无描述)' }\n        }} |\n        Format-Table -AutoSize\n    Write-Host \"`n💡 第三方任务值得审查，尤其是无描述且来源不明的\"\n} else {\n    Write-Host \"✅ 无非 Microsoft 计划任务\"\n}\n```\n\n\n\n**风险等级**：🟢 无（只读审计）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Access denied` | 权限不足 | 管理员身份执行 |\n| `The system cannot find the file specified` | 任务引用的程序已删除 | 正常（残留任务），值得清理 |\n| `Task Scheduler service is not running` | 计划任务服务未启动 | `Start-Service Schedule` |\n\n**常见坑 & 解决**：\n\n| 场景 | 说明 |\n|-----|------|\n| 大量凌晨执行的隐藏窗口任务 | 软件更新常见，但需逐条确认来源 |\n| 从 Temp 目录执行的任务 | 高危特征，多数恶意软件行为 |\n| 无描述的随机名任务 | 可能是病毒/蠕虫创建，建议隔离排查 |\n| 编码命令 (Base64) 执行 | 极高风险，常见于挖矿脚本和外连木马 |\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-18\"></a>\n\n## 🆕 模块 18：文件共享与 SMB 审计\n\n\n\n\n<details>\n<summary>📋 展开查看：🆕 模块 18：文件共享与 SMB 审计</summary>\n\n**用途**：列出所有共享文件夹、当前 SMB 连接、权限风险检测。\n\n**常你说**：`\"有哪些共享文件夹\"` / `\"共享权限安全吗\"` / `\"谁在访问共享\"` / `\"SMB 审计\"`\n\n> ⚠️ **本模块仅读，不会关闭共享、断开连接或修改权限。**\n\n### 18.1 已共享文件夹清单\n\n\n\n\n```powershell\nWrite-Host \"════════ 已共享文件夹 ════════\"\nGet-SmbShare | Where-Object { $_.Name -notin @('IPC$','ADMIN$') -or $_.Special -eq $false } |\n    Select-Object @{N='共享名';E={$_.Name}},\n        @{N='路径';E={$_.Path}},\n        @{N='描述';E={if($_.Description){$_.Description}else{'(无)'}}},\n        @{N='最大用户数';E={$_.ConcurrentUserLimit}},\n        @{N='缓存模式';E={$_.CachingMode}},\n        @{N='共享状态';E={$_.ShareState}} |\n    Format-Table -AutoSize\n\nWrite-Host \"`n💡 ADMIN$ 和 IPC$ 为系统默认管理共享，属正常\"\n```\n\n\n\n### 18.2 共享权限审计\n\n\n\n\n```powershell\nWrite-Host \"════════ 共享权限审计 ════════\"\n$shares = Get-SmbShare | Where-Object { $_.Name -notin @('IPC$','ADMIN$') -or $_.Special -eq $false }\n\nforeach ($share in $shares) {\n    Write-Host \"`n═══ 共享: $($share.Name) → $($share.Path) ═══\"\n\n    # 共享级别权限\n    try {\n        $sharePerm = Get-SmbShareAccess -Name $share.Name -ErrorAction SilentlyContinue\n        foreach ($perm in $sharePerm) {\n            $flag = if ($perm.AccessRight -eq 'Full' -and $perm.AccountName -eq 'Everyone') {\n                \"🔴 高风险: Everyone 拥有完全控制\"\n            } elseif ($perm.AccountName -eq 'Everyone') {\n                \"⚠️ Everyone 可访问\"\n            } else {\n                \"\"\n            }\n            Write-Host \"  共享权限: $($perm.AccountName) -> $($perm.AccessRight)  $flag\"\n        }\n    } catch {\n        Write-Host \"  共享权限: 无法获取\"\n    }\n\n    # NTFS 级别权限（对物理路径）\n    if (Test-Path $share.Path) {\n        $ntfsPerm = Get-Acl $share.Path -ErrorAction SilentlyContinue\n        if ($ntfsPerm) {\n            $ntfsPerm.Access | Where-Object { $_.IdentityReference -match 'Everyone|BUILTIN|Guest|ANONYMOUS' } |\n                ForEach-Object {\n                    Write-Host \"  NTFS权限: $($_.IdentityReference) -> $($_.FileSystemRights) ⚠️ 宽松权限\"\n                }\n        }\n    }\n}\n```\n\n\n\n### 18.3 当前 SMB 连接会话\n\n\n\n\n```powershell\nWrite-Host \"════════ 当前 SMB 连接会话 ════════\"\n$sessions = Get-SmbSession -ErrorAction SilentlyContinue |\n    Select-Object @{N='客户端';E={$_.ClientComputerName}},\n        @{N='用户名';E={$_.UserName}},\n        @{N='空闲时间(分钟)';E={[math]::Round($_.IdleTime.TotalMinutes, 0)}},\n        @{N='会话时长(分钟)';E={[math]::Round((New-TimeSpan -Start $_.SessionStartTime).TotalMinutes, 0)}} |\n    Sort-Object @{E='空闲时间(分钟)';Descending=$true}\n\nif ($sessions) {\n    $sessions | Format-Table -AutoSize\n    Write-Host \"`n💡 空闲 >60 分钟的会话可能为僵尸连接\"\n} else {\n    Write-Host \"  当前无活跃 SMB 会话\"\n}\n```\n\n\n\n### 18.4 开放共享中的风险项汇总\n\n\n\n\n```powershell\nWrite-Host \"════════ 共享风险汇总 ════════\"\n$risks = @()\n$shares = Get-SmbShare | Where-Object { $_.Name -notin @('IPC$','ADMIN$') -or $_.Special -eq $false }\n\nforeach ($share in $shares) {\n    $sharePerm = Get-SmbShareAccess -Name $share.Name -ErrorAction SilentlyContinue\n    foreach ($perm in $sharePerm) {\n        if ($perm.AccountName -eq 'Everyone') {\n            $risks += \"🔴 [$($share.Name)] Everyone -> $($perm.AccessRight) 控制权\"\n        }\n        if ($perm.AccountName -eq 'ANONYMOUS LOGON' -or $perm.AccountName -eq 'Guest') {\n            $risks += \"🔴 [$($share.Name)] $($perm.AccountName) -> $($perm.AccessRight)\"\n        }\n    }\n\n    # 检查共享指向路径不存在\n    if (-not (Test-Path $share.Path)) {\n        $risks += \"⚠️ [$($share.Name)] 共享路径不存在: $($share.Path)\"\n    }\n}\n\nif ($risks.Count -gt 0) {\n    $risks | ForEach-Object { Write-Host $_ }\n    Write-Host \"`n建议: 收紧共享权限为最小访问原则，禁用 Guest/匿名访问\"\n} else {\n    Write-Host \"✅ 未发现高风险的共享配置\"\n}\n\n# 同时检查 SMBv1 是否启用\n$smb1 = Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -ErrorAction SilentlyContinue\nif ($smb1 -and $smb1.State -eq 'Enabled') {\n    Write-Host \"`n🔴 SMBv1 已启用！存在 WannaCry 等勒索软件漏洞风险，建议禁用\"\n}\n```\n\n\n\n**风险等级**：🟢 无（只读审计）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Get-SmbShare` 报错 | SMB 未启用或无权限 | 管理员身份在服务器上执行 |\n| `Get-SmbSession` 为空 | 当前无 SMB 连接 | 正常 |\n| `Access denied on Get-Acl` | 部分目录 NTFS 权限限制 | 某些系统目录属正常 |\n\n**常见坑 & 解决**：\n\n| 场景 | 说明 |\n|-----|------|\n| Everyone 拥有完全控制 | 任何网络用户可读/写，极大风险 |\n| SMBv1 仍启用 | 永恒之蓝等漏洞存在，应立即禁用 |\n| 指向不存在的路径 | 残留共享，建议删除 |\n| 大量僵尸 SMB 会话 | 客户端未正常断开，占用连接数 |\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-19\"></a>\n\n## 🆕 模块 19：DNS 解析与网卡诊断\n\n\n\n\n<details>\n<summary>📋 展开查看：🆕 模块 19：DNS 解析与网卡诊断</summary>\n\n**用途**：DNS 缓存查看与清空、解析链路测试、网卡 IP 配置、路由表检查。\n\n**常你说**：`\"DNS 解析正常吗\"` / `\"网卡配置\"` / `\"网络诊断\"` / `\"路由表\"`\n\n> ⚠️ **本模块操作：DNS 缓存查看/清空（可恢复）+ 网卡 IP 查看（只读）。DNS 清空后会重新从服务器获取，非破坏性。**\n\n### 19.1 DNS 缓存与解析测试\n\n\n\n\n```powershell\nWrite-Host \"════════ DNS 缓存 ════════\"\n$dnsCache = Get-DnsClientCache -ErrorAction SilentlyContinue\nif ($dnsCache) {\n    Write-Host \"  缓存条目: $(($dnsCache | Measure-Object).Count)\"\n    $dnsCache | Select-Object -First 20 @{N='域名';E={$_.Entry}},\n        @{N='类型';E={$_.RecordType}},\n        @{N='IP地址';E={$_.Data}},\n        @{N='TTL(秒)';E={$_.TimeToLive}} |\n        Format-Table -AutoSize\n} else {\n    Write-Host \"  当前无 DNS 缓存\"\n}\n\nWrite-Host \"`n════════ DNS 缓存中异常的记录 (TTL异常长) ════════\"\nif ($dnsCache) {\n    $abnormal = $dnsCache | Where-Object { $_.TimeToLive -gt 86400 }\n    if ($abnormal) {\n        $abnormal | Select-Object Entry, Data, TimeToLive | Format-Table -AutoSize\n    } else {\n        Write-Host \"  ✅ 无异常记录\"\n    }\n}\n\nWrite-Host \"`n💡 如需清空 DNS 缓存，说：「确认清空 DNS 缓存」\"\nWrite-Host \"  清空命令: Clear-DnsClientCache  (清空后会自动从DNS服务器重新获取)\"\n```\n\n\n\n### 19.2 DNS 服务器配置与解析链路测试\n\n\n\n\n```powershell\nWrite-Host \"════════ DNS 服务器配置 ════════\"\nGet-DnsClientServerAddress -AddressFamily IPv4 |\n    Where-Object { $_.ServerAddresses.Count -gt 0 } |\n    Select-Object @{N='网卡';E={$_.InterfaceAlias}},\n        @{N='索引';E={$_.InterfaceIndex}},\n        @{N='DNS 服务器';E={($_.ServerAddresses -join ', ')}} |\n    Format-Table -AutoSize\n\nWrite-Host \"`n════════ 解析链路测试 (逐级 DNS) ════════\"\n$testDomains = @('www.baidu.com', 'www.google.com', 'portal.azure.com')\nforeach ($domain in $testDomains) {\n    try {\n        $result = Resolve-DnsName -Name $domain -Type A -ErrorAction Stop\n        $ip = ($result | Where-Object { $_.Type -eq 'A' } | Select-Object -First 1).IPAddress\n        if ($ip) { Write-Host \"  ✅ $domain → $ip\" }\n        else { Write-Host \"  ❌ $domain → 解析失败\" }\n    } catch {\n        Write-Host \"  ❌ $domain → $($_.Exception.Message.Split('.')[0])\"\n    }\n}\n```\n\n\n\n### 19.3 网卡 IP 配置概览\n\n\n\n\n```powershell\nWrite-Host \"════════ 网卡 IP 配置 ════════\"\nGet-NetIPAddress -AddressFamily IPv4 |\n    Where-Object { $_.InterfaceAlias -notmatch 'Loopback' -and $_.IPAddress -ne '127.0.0.1' } |\n    Select-Object @{N='网卡';E={$_.InterfaceAlias}},\n        @{N='IP 地址';E={$_.IPAddress}},\n        @{N='子网掩码';E={$_.PrefixLength}},\n        @{N='网关';E={\n            $ifIndex = $_.InterfaceIndex\n            $gw = Get-NetRoute -InterfaceIndex $ifIndex -DestinationPrefix '0.0.0.0/0' -ErrorAction SilentlyContinue\n            if ($gw) { $gw.NextHop } else { '-' }\n        }},\n        @{N='状态';E={$_.AddressState}} |\n    Format-Table -AutoSize\n\nWrite-Host \"`n════════ 网卡 MAC 地址与速率 ════════\"\nGet-NetAdapter | Where-Object { $_.Status -eq 'Up' } |\n    Select-Object @{N='网卡名';E={$_.Name}},\n        @{N='MAC';E={$_.MacAddress}},\n        @{N='速率';E={if($_.LinkSpeed){ \"$([math]::Round($_.LinkSpeed/1e9,1)) Gbps\" }else{'未知'}}},\n        @{N='状态';E={$_.Status}} |\n    Format-Table -AutoSize\n```\n\n\n\n### 19.4 路由表检查\n\n\n\n\n```powershell\nWrite-Host \"════════ IPv4 路由表 ════════\"\nGet-NetRoute -AddressFamily IPv4 |\n    Where-Object { $_.DestinationPrefix -ne '255.255.255.255/32' } |\n    Sort-Object @{E={if ($_.DestinationPrefix -eq '0.0.0.0/0') {0} else {1}}},\n        @{E='RouteMetric'} |\n    Select-Object @{N='目标网络';E={$_.DestinationPrefix}},\n        @{N='下一跳';E={$_.NextHop}},\n        @{N='接口';E={$_.InterfaceAlias}},\n        @{N='跃点数';E={$_.RouteMetric}},\n        @{N='协议';E={$_.Protocol}} |\n    Format-Table -AutoSize\n\nWrite-Host \"`n💡 跃点数越小优先级越高\"\nWrite-Hos\n\nFile v3.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn7chdrwbdhaqkwajcyhtfvjx989ddb1\",\n  \"slug\": \"winskill\",\n  \"version\": \"3.1.0\",\n  \"publishedAt\": 1786876214344\n}\n\nFile v3.1.0:skill-card.md\n\n## Description:\n\nWinskill is a Windows Server operations toolbox that helps agents generate PowerShell-based diagnostics, reports, cleanup previews, repair workflows, security audits, remote management actions, and module guidance.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[fyniujin](https://clawhub.ai/user/fyniujin)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers, system administrators, and operations engineers use this skill to investigate and manage Windows Server environments through guided PowerShell snippets, markdown reports, and confirmation-gated operational workflows.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill covers high-privilege Windows administration, including remote management, credential storage, repair flows, cleanup, service operations, and scheduled baseline collection.\n\nMitigation: Install only when those administrative capabilities are intended; review generated commands before execution and run with least-privilege accounts where possible.\n\nRisk: Security evidence says the skill makes contradictory safety and offline claims despite exposing admin, remote execution, credential storage, deletion, and persistence-related features.\n\nMitigation: Do not rely on the skill's offline or read-only claims as a control; require human review for remote management, credential storage, cleanup, repair, and scheduled-task actions.\n\nRisk: Cleanup and repair workflows can delete files, stop services, reset networking, clear caches, or modify system state.\n\nMitigation: Require an explicit operation preview and confirmation before state-changing commands, and validate backups or restore points before repair or cleanup actions.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/fyniujin/skills/winskill)\n- [Docker Engine on Windows Server documentation](https://docs.docker.com/engine/install/windows-server/)\n- [kubectl on Windows documentation](https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown with PowerShell and shell command snippets]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Outputs may include administrative command proposals, diagnostic tables, reports, and confirmation prompts.]\n\n## Skill Version(s):\n\n3.1.0 (source: frontmatter and server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v3.0.0: 3 files, 50116 bytes\n\nFiles: skill-card.md (2509b), SKILL.md (174307b), _meta.json (127b)\n\nFile v3.0.0:SKILL.md\n\n---\nname: winskill\ndescription: \"Windows 服务器运维工具箱 - 磁盘分析、临时文件清理、IIS 站点管理、批量文件操作、服务状态监控、Windows Update 诊断、实时性能监控、安全审计、注册表启动项审计、磁盘健康检测、网络端口监控、事件日志诊断、已安装程序管理、用户会话监控、计划任务审计、文件共享审计、DNS网卡诊断、SSL证书过期检测、防火墙规则审计、服务崩溃恢复状态、系统文件修复、存储池管理、备份状态检查、Docker容器管理、K8s集群监控、自动化修复向导、性能基线与趋势分析、等保合规检查清单、远程多服务器管理。只读分析+安全确认，绝不误删文件，完全免费离线运行。\"\nversion: 3.0.0\n---\n\n\n# Winskill — Windows 服务器运维工具箱\n\n## 快速开始\n\n**直接对 AI 说就行，不用记命令。**\n\n| 你想做什么 | 直接对 AI 说 |\n|-----------|-------------|\n| 看磁盘空间 | `\"帮我扫一下 D 盘大文件\"` |\n| 清理临时文件 | `\"看看我电脑的临时文件\"` |\n| 检查 IIS | `\"我的 IIS 站点还活着吗？\"` |\n| 检测重复文件 | `\"帮我找下重复文件\"` |\n| 检查服务状态 | `\"看下数据库和 IIS 服务有没有挂\"` |\n| Windows Update 状态 | `\"Windows Update 正常吗？有积压补丁吗？\"` |\n| 服务器卡顿定位 | `\"服务器变卡了，帮我看看是什么原因\"` |\n| 检查有没有被入侵 | `\"帮我查一下有没有异常登录\"` |\n| 检查可疑启动项 | `\"有没有可疑的自启动程序\"` |\n| 磁盘健康状态 | `\"硬盘还健康吗？有没有坏道\"` |\n| 网络连接监控 | `\"谁在连我的服务器\"` |\n| 系统日志哪里错了 | `\"系统日志有没有最近的错误\"` |\n| 服务器装了什么程序 | `\"看看系统安装了哪些软件\"` |\n| 谁在服务器上 | `\"当前有谁登录了服务器\"` |\n| 检查计划任务 | `\"有没有可疑的计划任务\"` |\n| 文件共享审计 | `\"有哪些共享文件夹，权限安全吗\"` |\n| DNS / 网卡诊断 | `\"DNS 解析正常吗\"` |\n| 搞不定了 | `\"我遇到报错了，帮我看看\"` |\n\n> ⚠️ **AI 必须遵守**：凡涉及删除、停止服务、修改系统的操作，必须先展示操作清单，等用户明确说\"确认执行\"后才可执行。\n\n---\n\n## 安全声明\n\n| 保护项 | 方式 |\n|-------|------|\n| 系统目录保护 | 绝不操作 `C:\\Windows`、`C:\\Program Files` 等 |\n| 删除必须确认 | 先展示受影响文件，等用户说\"确认清理\"后才执行 |\n| 回收站优先 | 删除用 `Shell.Application` 回收站 API |\n| 只读诊断 | 所有分析命令不修改任何文件/服务/注册表 |\n| 日志记录 | 操作记录到 `C:\\AdminScripts\\winskill.log` |\n| 排除保护 | `pagefile.sys`、`hiberfil.sys` 等系统文件不可操作 |\n| 注册表保护 | 注册表分析只读，任何修改需双重确认 |\n| 日志读取保护 | 事件日志只读查看，不修改任何日志记录 |\n\n---\n\n## 功能模块\n\n## 📌 模块导航（点击直达，共 30 个模块）\n\n**🖥️ 基础运维（1-7）：**\n[模块 1：磁盘空间分析](#module-1) · [模块 2：大文件重复检测](#module-2) · [模块 3：临时文件安全清理](#module-3) · [模块 4：IIS 站点管理](#module-4) · [模块 5：服务状态监控](#module-5) · [模块 6：批量文件操作](#module-6) · [模块 7：目录磁盘使用报告](#module-7)\n\n**🔧 进阶运维（8-18）：**\n[模块 8：Windows Update 服务状态与缓存管理](#module-8) · [模块 9：实时性能监控与进程资源分析](#module-9) · [模块 10：安全审计与日志分析](#module-10) · [模块 11：注册表与启动项安全审计](#module-11) · [模块 12：磁盘健康状态检测](#module-12) · [模块 13：网络连接与端口监控](#module-13) · [模块 14：Windows 事件日志诊断](#module-14) · [模块 15：已安装程序与补丁管理](#module-15) · [模块 16：用户会话与登录状态监控](#module-16) · [模块 17：计划任务审计](#module-17) · [模块 18：文件共享与 SMB 审计](#module-18)\n\n**🔒 安全专项（19-25）：**\n[模块 19：DNS 解析与网卡诊断](#module-19) · [模块 20：SSL 证书过期检测](#module-20) · [模块 21：Windows 防火墙规则审计](#module-21) · [模块 22：关键服务崩溃与自动恢复状态](#module-22) · [模块 23：系统文件完整性检查与修复（SFC / DISM）](#module-23) · [模块 24：存储池与虚拟磁盘管理（Storage Spaces）](#module-24) · [模块 25：Windows Server Backup 状态检查](#module-25)\n\n**🚀 高级功能（26-30）：**\n[模块 26：Docker / K8s 容器管理](#module-26) · [模块 27：自动化修复向导](#module-27) · [模块 28：性能基线 & 趋势分析](#module-28) · [模块 29：安全合规检查清单](#module-29) · [模块 30：远程多服务器管理](#module-30)\n\n---\n\n<a name=\"module-1\"></a>\n\n### 模块 1：磁盘空间分析\n\n\n\n\n\n\n<details>\n<summary>📋 展开查看：模块 1：磁盘空间分析</summary>\n\n**用途**：扫描指定路径，找出占用空间的大文件和目录。\n\n**常你说**：`\"扫一下 C 盘大文件\"` / `\"D 盘哪个最占空间\"`\n\n\n\n\n```powershell\n$scanPath = \"C:\\\"   # ← 改成你要扫的盘符或目录\n\nGet-ChildItem -Path $scanPath -Recurse -File -ErrorAction SilentlyContinue |\n    Where-Object { $_.Length -gt 100MB } |\n    Sort-Object Length -Descending |\n    Select-Object -First 50 @{N='路径';E={$_.FullName}},\n        @{N='大小(GB)';E={[math]::Round($_.Length/1GB,2)}},\n        @{N='最后修改';E={$_.LastWriteTime}}\n```\n\n\n\n**风险等级**：🟢 无（只读）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Access to the path 'xxx' is denied` | 权限不足 | 管理员身份运行 PowerShell |\n| `Could not find a part of the path` | 目录不存在 | 确认路径 |\n\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-2\"></a>\n\n### 模块 2：大文件重复检测\n\n\n\n\n\n\n<details>\n<summary>📋 展开查看：模块 2：大文件重复检测</summary>\n\n**用途**：通过 MD5 哈希找出重复文件。\n\n**常你说**：`\"找找 D 盘有没有重复文件\"`\n\n\n\n\n```powershell\n$scanPath = \"D:\\\"   # ← 扫描目标目录\n$minSize = 1MB      # ← 只检测大于 1MB 的文件\n\nGet-ChildItem -Path $scanPath -Recurse -File -ErrorAction SilentlyContinue |\n    Where-Object { $_.Length -gt $minSize } |\n    ForEach-Object {\n        $hash = (Get-FileHash $_.FullName -Algorithm MD5 -ErrorAction SilentlyContinue).Hash\n        if ($hash) {\n            [PSCustomObject]@{\n                路径 = $_.FullName\n                哈希 = $hash\n                大小MB = [math]::Round($_.Length/1MB,2)\n            }\n        }\n    } |\n    Group-Object 哈希 |\n    Where-Object { $_.Count -gt 1 } |\n    ForEach-Object { $_.Group }\n```\n\n\n\n**风险等级**：🟢 无（只读）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Exception getting file hash` | 文件正在使用 | 跳过 |\n| `The specified path is not valid` | 路径格式不对 | 检查路径 |\n\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-3\"></a>\n\n### 模块 3：临时文件安全清理\n\n\n\n\n\n\n<details>\n<summary>📋 展开查看：模块 3：临时文件安全清理</summary>\n\n**用途**：扫描安全可删的临时文件，先预览后确认再清理。\n\n**常你说**：`\"帮我清理临时文件\"` / `\"C 盘快满了帮清 temp\"`\n\n**安全清理路径**：\n\n| 路径 | 说明 | 安全天数 |\n|------|------|---------|\n| `%TEMP%\\*` | 用户临时文件 | >7 天 |\n| `C:\\Windows\\Temp\\*` | 系统临时文件 | >7 天 |\n| `C:\\Windows\\SoftwareDistribution\\Download\\*` | Windows Update 下载缓存 | 任意 |\n| `C:\\Windows\\Prefetch\\*` | 程序预取 | >30 天 |\n| `IIS Temporary Compressed Files\\*` | IIS 压缩缓存 | >1 天 |\n\n\n\n\n```powershell\n$tempPath = $env:TEMP\n$daysOld = 7\n$cutoff = (Get-Date).AddDays(-$daysOld)\n\n$tempFiles = Get-ChildItem -Path $tempPath -Recurse -ErrorAction SilentlyContinue |\n    Where-Object { $_.LastWriteTime -lt $cutoff }\n\nWrite-Host \"═══════════════════════════════════════════\"\nWrite-Host \"  📋 扫描结果: $tempPath\"\nWrite-Host \"  过期临时文件数: $($tempFiles.Count) 个\"\nWrite-Host \"═══════════════════════════════════════════\"\n\n$tempFiles | Sort-Object Length -Descending |\n    Select-Object -First 20 |\n    Select-Object @{N='文件路径';E={$_.FullName}},\n        @{N='大小(KB)';E={[math]::Round($_.Length/1KB,1)}},\n        @{N='最后修改';E={$_.LastWriteTime}} |\n    Format-Table -AutoSize\n\n$totalKB = ($tempFiles | Measure-Object -Property Length -Sum).Sum\nWrite-Host \"  预计可释放空间: $([math]::Round($totalKB/1MB,2)) MB\"\nWrite-Host \"  ⚠️ 确认删除请说 '确认清理'\"\n```\n\n\n\n\n\n\n```powershell\n# ⚠️ 仅当用户明确说「确认清理」后才执行！\nWrite-Host \"  正在移到回收站...\"\n$shell = New-Object -ComObject Shell.Application\n$rb = $shell.NameSpace(0x0a)\n$totalFiles = 0\nforeach ($f in $tempFiles) {\n    try {\n        $rb.MoveHere($f.FullName)\n        $totalFiles++\n    } catch { }\n}\nWrite-Host \"  ✅ 已完成！已将 $totalFiles 个文件移到回收站\"\nWrite-Host \"  如需彻底删除，请手动清空回收站\"\n```\n\n\n\n**风险等级**：🟡 中（需确认后删除）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Cannot find path ... does not exist` | temp 目录下某些路径不存在 | 自动跳过 |\n| `Access is denied` | 系统临时文件正在使用中 | 跳过，正常现象 |\n| `MoveHere` 失败 | 回收站操作异常 | 手动清或用其他方式 |\n\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-4\"></a>\n\n### 模块 4：IIS 站点管理\n\n\n\n\n\n\n<details>\n<summary>📋 展开查看：模块 4：IIS 站点管理</summary>\n\n**用途**：查看站点状态、应用池信息、快速重启。\n\n**常你说**：`\"我的 IIS 站点正常吗？\"` / `\"重启一下应用池\"`\n\n**前置条件**（需管理员权限）：\n\n\n```powershell\nif (-not (Get-Module -ListAvailable -Name WebAdministration)) {\n    Write-Host \"⚠️ IIS 管理工具未安装，请以管理员运行:\"\n    Install-WindowsFeature Web-Mgmt-Tools\n}\nImport-Module WebAdministration\n```\n\n\n\n\n\n```powershell\nImport-Module WebAdministration\n\nWrite-Host \"════════ IIS 站点列表 ════════\"\nGet-Website | Select-Object @{N='站点名';E={$_.Name}},\n    @{N='状态';E={$_.State}},\n    @{N='物理路径';E={$_.PhysicalPath}},\n    @{N='应用池';E={$_.ApplicationPool}},\n    @{N='绑定';E={$_.Bindings -join ';'}} |\n    Format-Table -AutoSize\n\nWrite-Host \"`n════════ 应用池状态 ════════\"\nGet-WebAppPoolState | Select-Object @{N='名';E={$_.Name}}, @{N='状态';E={$_.Value}} |\n    Format-Table -AutoSize\n```\n\n\n\n\n\n\n```powershell\n# ⚠️ 仅当用户明确确认后才执行！\n# Restart-WebSite -Name \"你的站点名\"\n```\n\n\n\n**风险等级**：🟢 查看只读 / 🟡 重启需确认\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Get-Website is not recognized` | IIS 模块未加载 | `Install-WindowsFeature Web-Mgmt-Tools` |\n| `Cannot connect to IIS` | W3SVC 服务未启动 | 管理服务 |\n| `Could not find WebAdministration` | 未装 IIS 管理工具 | 添加 Web 管理工具 |\n\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-5\"></a>\n\n### 模块 5：服务状态监控\n\n\n\n\n\n\n<details>\n<summary>📋 展开查看：模块 5：服务状态监控</summary>\n\n**用途**：一眼看出哪些关键服务挂了。\n\n**常你说**：`\"检查服务器关键服务\"` / `\"看下数据库有没有挂\"`\n\n\n\n\n```powershell\n$criticalServices = @(\n    \"W3SVC\",        # IIS\n    \"MSSQLSERVER\",  # SQL Server\n    \"MySQL80\",      # MySQL\n    \"Redis\",        # Redis\n    \"Elasticsearch\",# ES\n    \"Docker\",       # Docker\n    \"Spooler\",      # 打印\n    \"TermService\",  # 远程桌面\n    \"Nginx\",        # Nginx\n    \"Apache\",       # Apache\n    \"Tomcat\"        # Tomcat\n)\n\nWrite-Host \"════════ 关键服务状态 ════════\"\n$hasStopped = $false\nforeach ($svc in $criticalServices) {\n    $s = Get-Service -Name $svc -ErrorAction SilentlyContinue\n    if ($s) {\n        $icon = if ($s.Status -eq 'Running') { '✅' } else { '❌'; $hasStopped = $true }\n        Write-Host \"  $icon $($s.DisplayName) [$($s.Status)]\"\n    }\n}\nWrite-Host \"═══════════════════════════════\"\nif ($hasStopped) { Write-Host \"  ⚠️ 有服务未运行\" }\nelse { Write-Host \"  ✅ 所有检测服务正常\" }\n```\n\n\n\n**风险等级**：🟢 无（只读）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Cannot find any service ...` | 该服务未安装 | 自动跳过 |\n\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-6\"></a>\n\n### 模块 6：批量文件操作\n\n\n\n\n\n\n<details>\n<summary>📋 展开查看：模块 6：批量文件操作</summary>\n\n**用途**：先预览规则，再确认执行批量重命名/移动。\n\n**常你说**：`\"把所有 .log 改成 backup_1.log 格式\"`\n\n\n\n\n```powershell\n$sourceDir = \"D:\\logs\"    # ← 源目录\n$searchFilter = \"*.log\"   # ← 文件筛选\n$renamePrefix = \"backup\"  # ← 新文件名前缀\n\n$files = Get-ChildItem -Path $sourceDir -Filter $searchFilter -File\nWrite-Host \"════════ 批量重命名预览 ════════\"\nWrite-Host \"  扫描到 $($files.Count) 个 $searchFilter 文件\"\n\n$i = 1\nforeach ($f in $files) {\n    Write-Host \"  🔄 $($f.Name) → ${renamePrefix}_${i}${f.Extension}\"\n    $i++\n}\n\nWrite-Host \"`n  共 $($files.Count) 个文件将被重命名\"\nWrite-Host \"  ⚠️ 确认执行请说 '确认重命名'\"\n```\n\n\n\n\n\n\n```powershell\n# ⚠️ 仅当用户明确说「确认重命名」后才执行！\n# $i = 1\n# foreach ($f in $files) {\n#     $newName = \"${renamePrefix}_${i}${f.Extension}\"\n#     Rename-Item -Path $f.FullName -NewName $newName\n#     Write-Host \"  ✅ $($f.Name) → $newName\"\n#     $i++\n# }\n```\n\n\n\n**风险等级**：🟡 中（需确认）\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `Cannot rename because item already exists` | 新文件名已存在 | 加时间戳避免重名 |\n| `Access to the path is denied` | 文件锁定 | 关相关程序再试 |\n\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-7\"></a>\n\n### 模块 7：目录磁盘使用报告\n\n\n\n\n\n\n<details>\n<summary>📋 展开查看：模块 7：目录磁盘使用报告</summary>\n\n**用途**：用进度条样式一眼看出各目录占用。\n\n**常你说**：`\"看看各个目录的空间占用\"`\n\n\n\n\n```powershell\nfunction Get-DirectorySize([string]$Path) {\n    (Get-ChildItem -Path $Path -Recurse -File -ErrorAction SilentlyContinue |\n     Measure-Object -Property Length -Sum).Sum\n}\n\n$dirs = @(\"C:\\inetpub\", \"C:\\Windows\\Temp\", \"C:\\ProgramData\",\n          \"$env:TEMP\", \"C:\\Users\",\n          \"C:\\Windows\\SoftwareDistribution\", \"D:\\\")\n\nforeach ($d in $dirs) {\n    if (Test-Path $d) {\n        $sizeGB = [math]::Round((Get-DirectorySize $d) / 1GB, 2)\n        if ($sizeGB -gt 10)     { $icon = '🔴' }\n        elseif ($sizeGB -gt 5) { $icon = '🟡' }\n        else                  { $icon = '🟢' }\n        Write-Host \"  $icon $d : ${sizeGB} GB\"\n    }\n}\n```\n\n\n\n**风险等级**：🟢 无（只读）\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-8\"></a>\n\n## 🆕 模块 8：Windows Update 服务状态与缓存管理\n\n\n\n\n<details>\n<summary>📋 展开查看：🆕 模块 8：Windows Update 服务状态与缓存管理</summary>\n\n**用途**：诊断 Windows Update 是否卡住、查看已安装补丁、清理更新缓存。\n\n**常你说**：`\"Windows Update 正常吗？\"` / `\"更新缓存能不能删\"`\n\n### 8.1 查看更新服务状态与已安装补丁（只读）\n\n\n\n\n```powershell\n# 更新服务状态\nGet-Service -Name wuauserv |\n    Select-Object @{N='服务';E={$_.Name}},\n        @{N='状态';E={$_.Status}},\n        @{N='启动类型';E={$_.StartType}},\n        @{N='账号';E={$_.StartName}}\n\nWrite-Host \"\"\n\n# 已安装补丁（最近 10 个）\nGet-HotFix | Sort-Object InstalledOn -Descending |\n    Select-Object -First 10 @{N='补丁ID';E={$_.HotFixID}},\n        @{N='安装日期';E={$_.InstalledOn}}\n```\n\n\n\n### 8.2 检查 SoftwareDistribution 更新缓存大小\n\n\n\n\n```powershell\n$sd = \"C:\\Windows\\SoftwareDistribution\"\nif (Test-Path $sd) {\n    $total = (Get-ChildItem -Path $sd -Recurse -ErrorAction SilentlyContinue |\n              Measure-Object -Property Length -Sum).Sum\n    Write-Host \"  SoftwareDistribution 大小: $([math]::Round($total/1MB,1)) MB\"\n\n    $dlDir = Join-Path $sd \"Download\"\n    if (Test-Path $dlDir) {\n        $dlSize = (Get-ChildItem -Path $dlDir -Recurse -ErrorAction SilentlyContinue |\n                   Measure-Object -Property Length -Sum).Sum\n        Write-Host \"  └─ 下载缓存(Download): $([math]::Round($dlSize/1MB,1)) MB\"\n    }\n    Write-Host \"  💡 若超过 500MB 可考虑清理（需先停止 wuauserv 服务）\"\n} else {\n    Write-Host \"  ⚠️ SoftwareDistribution 目录不存在\"\n}\n```\n\n\n\n\n\n\n```powershell\n# ⚠️ 仅当用户明确说「确认清理更新缓存」后才执行！\n# Stop-Service -Name wuauserv -Force\n# Remove-Item -Path \"$sd\\Download\\*\" -Recurse -Force -ErrorAction SilentlyContinue\n# Start-Service -Name wuauserv\n# Write-Host \"  ✅ 已清理更新下载缓存，Windows Update 将重新下载所需补丁\"\n```\n\n\n\n**风险等级**：🟢 查看只读 / 🟡 清理缓存需确认\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `The service ... cannot be stopped` | 服务正在使用 | 稍后重试或重启后清理 |\n| `Access is denied` | 部分缓存文件被锁定 | 先停服务再清理 |\n\n**常见坑 & 解决**：\n\n| 场景 | 说明 |\n|-----|------|\n| Windows Update 一直不下载 | 服务挂起，重停重启动可解决 |\n| 错误码 0x80070005 | 权限问题，清理缓存可修复 |\n| 补丁安装失败 | 清理 Download 缓存后重新检查更新 |\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-9\"></a>\n\n## 🆕 模块 9：实时性能监控与进程资源分析\n\n\n\n\n<details>\n<summary>📋 展开查看：🆕 模块 9：实时性能监控与进程资源分析</summary>\n\n**用途**：定位 CPU/内存/磁盘 I/O 瓶颈，按进程排序找到罪魁祸首。\n\n**常你说**：`\"服务器变卡了，帮我看看\"` / `\"哪个进程吃内存最多\"`\n\n### 9.1 实时性能计数器（只读）\n\n\n\n\n```powershell\nGet-Counter '\\Processor(_Total)\\% Processor Time',\n              '\\Memory\\Available MBytes',\n              '\\Memory\\% Used',\n              '\\PhysicalDisk(_Total)\\% Disk Time',\n              '\\PhysicalDisk(_Total)\\Current Disk Queue Length' |\n    Select-Object -ExpandProperty CounterSamples |\n    Select-Object @{N='指标';E={$_.Path.Split('\\')[-2..-1] -join '\\'}},\n        @{N='当前值';E={[math]::Round($_.CookedValue, 1)}} |\n    Format-Table -AutoSize\n```\n\n\n\n### 9.2 内存占用 Top 10 进程\n\n\n\n\n```powershell\nGet-Process | Sort-Object WorkingSet64 -Descending |\n    Select-Object -First 10 @{N='进程名';E={$_.Name}},\n        @{N='内存(MB)';E={[math]::Round($_.WorkingSet64/1MB,1)}},\n        @{N='CPU(s)';E={[math]::Round($_.CPU,1)}} |\n    Format-Table -AutoSize\n```\n\n\n\n### 9.3 磁盘 I/O 详细统计（按进程）\n\n\n\n\n```powershell\nGet-Counter '\\Process(*)\\Read Bytes/sec',\n              '\\Process(*)\\Write Bytes/sec' |\n    Select-Object -ExpandProperty CounterSamples |\n    Where-Object { $_.CookedValue -gt 0 } |\n    Sort-Object CookedValue -Descending |\n    Select-Object -First 15 @{N='进程';E={\n        $_.Path -replace '\\\\Process\\((.*)\\)\\\\Read Bytes/sec$','$1' |\n        ForEach-Object { if ($_ -eq 'idle') { 'System Idle' } else { $_ }\n    }}, @{N='Bytes/s';E={[math]::Round($_.CookedValue, 0)}} |\n    Format-Table -AutoSize\n```\n\n\n\n\n\n\n```powershell\n# ⚠️ 仅当用户明确说「确认创建」后才执行！\n# $collector = New-DataCollectorSet -Name \"ServerPerf_$(Get-Date -Format 'yyyyMMdd')\" -Path \"C:\\PerfLogs\"\n# $collector.DataCollectors.Create(0, \"Counter\", 0,\n#     '\\Processor(_Total)\\% Processor Time',\n#     '\\Memory\\Available MBytes',\n#     '\\PhysicalDisk(_Total)\\% Disk Time'\n# )\n# $collector.Commit(\"C:\\PerfLogs\\ServerPerf\", 0, 0x01) | Out-Null\n# Write-Host \"  ✅ 已创建性能采集器，数据将保存到 C:\\PerfLogs\"\n```\n\n\n\n**风险等级**：🟢 实时查看 / 🟡 创建采集器需确认\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `The specified counter is not found` | 计数器未注册 | 运行 `lodctr /R` 重建计数器 |\n| `Access denied` | 需要管理员权限 | 提升后执行 |\n\n**常见坑 & 解决**：\n\n| 场景 | 说明 |\n|-----|------|\n| CPU 持续 >90% | 按进程排序定位异常进程 |\n| 可用内存 <500MB | 判断是否内存泄漏， IIS 应用池是否需回收 |\n| 磁盘队列长度 >2 | I/O 瓶颈，检查是否日志写入过多 |\n| 计数器全为零 | `lodctr /R` 重建性能计数器 |\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-10\"></a>\n\n## 🆕 模块 10：安全审计与日志分析\n\n\n\n\n<details>\n<summary>📋 展开查看：🆕 模块 10：安全审计与日志分析</summary>\n\n**用途**：检测暴力破解、特权操作、异常登录。\n\n**常你说**：`\"帮我查下有没有被入侵\"` / `\"有没有异常登录记录\"`\n\n### 10.1 检测暴力破解尝试（最近 24 小时）\n\n\n\n\n```powershell\n$since = (Get-Date).AddHours(-24)\n\n$failedLogins = Get-WinEvent -FilterHashtable @{\n    LogName='Security'; ID=4625; StartTime=$since\n} -ErrorAction SilentlyContinue\n\nif ($failedLogins) {\n    Write-Host \"⚠️ 最近 24h 失败登录 $($failedLogins.Count) 次`n\"\n    $failedLogins |\n        Select-Object TimeCreated,\n            @{N='账号';E={$_.Properties[5].Value}},\n            @{N='来源IP';E={$_.Properties[19].Value}} |\n        Group-Object SourceIP |\n        Sort-Object Count -Descending |\n        Select-Object -First 10 @{N='攻击源IP';E={$_.Name}},\n            @{N='尝试次数';E={$_.Count}} |\n        Format-Table -AutoSize\n    Write-Host \"  💡 尝试次数 >10 的 IP 建议加入防火墙黑名单\"\n} else {\n    Write-Host \"  ✅ 最近 24 小时无失败登录记录\"\n}\n```\n\n\n\n### 10.2 查看特权提升操作（管理员操作审计）\n\n\n\n\n```powershell\n$since = (Get-Date).AddHours(-24)\n\nWrite-Host \"════════ 特权操作（4672）════════\"\nGet-WinEvent -FilterHashtable @{\n    LogName='Security'; ID=4672; StartTime=$since\n} -ErrorAction SilentlyContinue |\n    Select-Object TimeCreated,\n        @{N='用户';E={$_.Properties[1].Value}},\n        @{N='特权';E={$_.Properties[2..($_.Properties.Count-1)].Value -join ', '}} |\n    Format-Table -AutoSize\n```\n\n\n\n### 10.3 本地管理员组成员检查\n\n\n\n\n```powershell\nWrite-Host \"════════ 本地管理员组成员 ════════\"\nGet-LocalGroupMember -Group \"Administrators\" |\n    Select-Object @{N='用户名';E={$_.Name}},\n        @{N='来源';E={$_.PrincipalSource}} |\n    Format-Table -AutoSize\n```\n\n\n\n\n\n\n```powershell\n# ⚠️ 仅当用户明确说「确认导出」后才执行！\n# $logPath = \"C:\\Logs\\Security_$(Get-Date -Format 'yyyyMMdd').evtx\"\n# if (-not (Test-Path \"C:\\Logs\")) { New-Item -ItemType Directory -Path \"C:\\Logs\" -Force }\n# wevtutil epl Security $logPath\n# Write-Host \"  ✅ 安全日志已导出到: $logPath\"\n```\n\n\n\n**风险等级**：🟢 只读审计 / 🟡 导出需确认\n\n| 报错 | 含义 | 解决 |\n|-----|------|-----|\n| `No events were found ...` | 没有符合条件的日志 | 正常，说明期间无异常 |\n| `The requested operation cannot be performed on a file ...` | 日志文件被占用 | 复制到另一路径导出 |\n| `Get-LocalGroupMember` 报错 | 需要管理员权限 | 提升执行 |\n\n**常见坑 & 解决**：\n\n| 场景 | 说明 |\n|-----|------|\n| 某 IP 失败登录 >100 次 | 暴力破解，建议防火墙封禁 |\n| 4672 事件频繁 | 有人在频繁执行管理员操作，需排查 |\n| 管理员组成员异常多了不认识账号 | 立即排查是否被入侵后留后门，删非法账号 |\n\n\n\n</details>\n\n[↑ 返回顶部](#module-1)\n\n---\n\n<a name=\"module-11\"></a>\n\n## 🆕 模块 11：注册表与启动项安全审计\n\n\n\n\n<details>\n<summary>📋 展开查看：🆕\n\nArchive v2.0.0: 3 files, 39120 bytes\n\nFiles: skill-card.md (2801b), SKILL.md (129241b), _meta.json (127b)\n\nArchive v1.9.0: 3 files, 35093 bytes\n\nFiles: skill-card.md (2802b), SKILL.md (113158b), _meta.json (127b)\n\nArchive v1.8.0: 3 files, 35186 bytes\n\nFiles: skill-card.md (2827b), SKILL.md (113123b), _meta.json (127b)\n\nArchive v1.7.0: 3 files, 32044 bytes\n\nFiles: skill-card.md (2807b), SKILL.md (100718b), _meta.json (127b)\n\nArchive v1.6.1: 3 files, 28266 bytes\n\nFiles: skill-card.md (2532b), SKILL.md (91818b), _meta.json (127b)","readmeExcerpt":"Skill: winskill Owner: fyniujin Summary: Windows 服务器运维工具箱 - 磁盘体检（统一入口）、临时文件清理、IIS 站点管理、批量文件操作、服务状态监控、Windows Update 诊断、实时性能监控、安全审计、注册表启动项审计、磁盘健康检测、网络端口监控、事件日志诊断、已安装程序管理、用户会话监控、计划任务审计、文件共享审计、DNS网卡诊断、SSL证书过期检测、防火墙规则审计、服务崩溃恢复状态、系统文件修复、存储池管理、备份状态检查、Docker容器管理、K8s集群监控、自动化修复向导、性能基线与趋势分析、等保合规检查清单、远程多服务器管理、日志轮转、模块索引、轻量常驻监控、趋势预测、告警推送、模糊重复检测、三级清理建议。只读分析+安全确认，绝不误删文件，完全免费离线运行。 Tags: latest:3.4.0 Version history: v3.4.0 | 2026-10","codeSnippets":[],"executableExamples":[{"language":"powershell","snippet":"function Write-WinskillLog {\n    param([string]$Message)\n    $logDir = \"$env:USERPROFILE\\.workbuddy\\output\\winskill\"\n    $logFile = Join-Path $logDir \"winskill.log\"\n    New-Item -ItemType Directory -Force -Path $logDir | Out-Null\n    $timestamp = Get-Date -Format \"yyyy-MM-dd HH:mm:ss\"\n    \"$timestamp $Message\" | Out-File $logFile -Append -Encoding utf8\n    if (Test-Path $logFile) {\n        $size = (Get-Item $logFile).Length\n        if ($size -gt 10MB) {\n            $timestamp = Get-Date -Format \"yyyyMMddHHmmss\"\n            Move-Item $logFile \"winskill.log.$timestamp\" -Force\n        }\n    }\n    Get-ChildItem $logDir -Filter \"winskill.log.*\" | Where-Object {\n        $_.LastWriteTime -lt (Get-Date).AddDays(-7)\n    } | Remove-Item -Force\n}"},{"language":"powershell","snippet":"Write-Host \"`n📋 Winskill 3.4.0 - 模块索引（共 34 个模块）\"\nWrite-Host (\"=\" * 60)\nWrite-Host (\"{0,-25} {1,-35}\" -f \"模块\", \"用途\")\nWrite-Host (\"-\" * 60)\n$modules = @(\n    \"模块 1: 磁盘空间分析 - 扫大文件/目录占用\",\n    \"模块 2: 大文件重复检测 - 找重复文件\",\n    \"模块 3: 临时文件安全清理 - 清理临时文件\",\n    \"模块 4: IIS 站点管理 - IIS 站点/应用池状态\",\n    \"模块 5: 服务状态监控 - Windows 服务状态\",\n    \"模块 6: 批量文件操作 - 批量重命名/移动/复制\",\n    \"模块 7: 目录磁盘使用报告 - 目录大小报告\",\n    \"模块 8: Windows Update 服务状态 - 更新服务/缓存\",\n    \"模块 9: 实时性能监控 - CPU/内存/磁盘/网络\",\n    \"模块 10: 安全审计与日志分析 - 暴力破解/特权操作\",\n    \"模块 11: 注册表与启动项安全审计 - 启动项/WMI\",\n    \"模块 12: 磁盘健康状态检测 - SMART/坏道/温度\",\n    \"模块 13: 网络连接与端口监控 - 连接/端口/防火墙\",\n    \"模块 14: Windows 事件日志诊断 - 系统/应用日志\",\n    \"模块 15: 已安装程序与补丁管理 - 程序/补丁清单\",\n    \"模块 16: 用户会话与登录状态监控 - 会话/登录\",\n    \"模块 17: 计划任务审计 - 计划任务清单\",\n    \"模块 18: 文件共享与 SMB 审计 - 共享/权限\",\n    \"模块 19: DNS 解析与网卡诊断 - DNS/网卡\",\n    \"模块 20: SSL 证书过期检测 - 证书扫描\",\n    \"模块 21: 防火墙规则审计 - 规则/高危检测\",\n    \"模块 22: 关键服务崩溃与自动恢复 - 服务崩溃记录\",\n    \"模块 23: 系统文件完整性检查与修复 - SFC/DISM\",\n    \"模块 24: 存储池与虚拟磁盘管理 - Storage Spaces\",\n    \"模块 25: Windows Server Backup 状态检查 - 备份状态\",\n    \"模块 26: Docker / K8s 容器管理 - 容器/集群\",\n    \"模块 27: 自动化修复向导 - 一键修复常见问题\",\n    \"模块 28: 性能基线 & 趋势分析 - 趋势/告警/预测\",\n    \"模块 29: 安全合规检查清单 - 等保2.0/CIS\",\n    \"模块 30: 远程多服务器管理 - 多机批量管理\",\n    \"模块 31: 轻量常驻监控 - schtasks 定时采样/阈值告警\",\n    \"模块 32: 趋势预测 - P50/P95 基线/SMART 故障预警\",\n    \"模块 33: 告警推送 - 企微/钉钉 webhook 去抖推送\",\n    \"模块 34: 磁盘体检 - 统一入口+模糊重复+三级清理+HTML报告\"\n)\n$modules | ForEach-Object { Write-Host $_ }\nWrite-Host (\"=\" * 60)\nWrite-Host \"直接对 AI 说模块名称或用途即可调用\""},{"language":"bash","snippet":"clawhub update winskill"},{"language":"powershell","snippet":"function Write-WinskillLog {\n    param([string]$Message)\n    $logDir = \"$env:USERPROFILE\\.workbuddy\\output\\winskill\"\n    $logFile = Join-Path $logDir \"winskill.log\"\n    New-Item -ItemType Directory -Force -Path $logDir | Out-Null\n    $timestamp = Get-Date -Format \"yyyy-MM-dd HH:mm:ss\"\n    \"$timestamp $Message\" | Out-File $logFile -Append -Encoding utf8\n    if (Test-Path $logFile) {\n        $size = (Get-Item $logFile).Length\n        if ($size -gt 10MB) {\n            $timestamp = Get-Date -Format \"yyyyMMddHHmmss\"\n            Move-Item $logFile \"winskill.log.$timestamp\" -Force\n        }\n    }\n    Get-ChildItem $logDir -Filter \"winskill.log.*\" | Where-Object {\n        $_.LastWriteTime -lt (Get-Date).AddDays(-7)\n    } | Remove-Item -Force\n}"},{"language":"powershell","snippet":"Write-Host \"`n📋 Winskill 3.3.0 - 模块索引（共 33 个模块）\"\nWrite-Host (\"=\" * 60)\nWrite-Host (\"{0,-25} {1,-35}\" -f \"模块\", \"用途\")\nWrite-Host (\"-\" * 60)\n$modules = @(\n    \"模块 1: 磁盘空间分析 - 扫大文件/目录占用\",\n    \"模块 2: 大文件重复检测 - 找重复文件\",\n    \"模块 3: 临时文件安全清理 - 清理临时文件\",\n    \"模块 4: IIS 站点管理 - IIS 站点/应用池状态\",\n    \"模块 5: 服务状态监控 - Windows 服务状态\",\n    \"模块 6: 批量文件操作 - 批量重命名/移动/复制\",\n    \"模块 7: 目录磁盘使用报告 - 目录大小报告\",\n    \"模块 8: Windows Update 服务状态 - 更新服务/缓存\",\n    \"模块 9: 实时性能监控 - CPU/内存/磁盘/网络\",\n    \"模块 10: 安全审计与日志分析 - 暴力破解/特权操作\",\n    \"模块 11: 注册表与启动项安全审计 - 启动项/WMI\",\n    \"模块 12: 磁盘健康状态检测 - SMART/坏道/温度\",\n    \"模块 13: 网络连接与端口监控 - 连接/端口/防火墙\",\n    \"模块 14: Windows 事件日志诊断 - 系统/应用日志\",\n    \"模块 15: 已安装程序与补丁管理 - 程序/补丁清单\",\n    \"模块 16: 用户会话与登录状态监控 - 会话/登录\",\n    \"模块 17: 计划任务审计 - 计划任务清单\",\n    \"模块 18: 文件共享与 SMB 审计 - 共享/权限\",\n    \"模块 19: DNS 解析与网卡诊断 - DNS/网卡\",\n    \"模块 20: SSL 证书过期检测 - 证书扫描\",\n    \"模块 21: 防火墙规则审计 - 规则/高危检测\",\n    \"模块 22: 关键服务崩溃与自动恢复 - 服务崩溃记录\",\n    \"模块 23: 系统文件完整性检查与修复 - SFC/DISM\",\n    \"模块 24: 存储池与虚拟磁盘管理 - Storage Spaces\",\n    \"模块 25: Windows Server Backup 状态检查 - 备份状态\",\n    \"模块 26: Docker / K8s 容器管理 - 容器/集群\",\n    \"模块 27: 自动化修复向导 - 一键修复常见问题\",\n    \"模块 28: 性能基线 & 趋势分析 - 趋势/告警/预测\",\n    \"模块 29: 安全合规检查清单 - 等保2.0/CIS\",\n    \"模块 30: 远程多服务器管理 - 多机批量管理\",\n    \"模块 31: 轻量常驻监控 - schtasks 定时采样/阈值告警\",\n    \"模块 32: 趋势预测 - P50/P95 基线/SMART 故障预警\",\n    \"模块 33: 告警推送 - 企微/钉钉 webhook 去抖推送\"\n)\n$modules | ForEach-Object { Write-Host $_ }\nWrite-Host (\"=\" * 60)\nWrite-Host \"直接对 AI 说模块名称或用途即可调用\""},{"language":"bash","snippet":"skillhub upgrade winskill"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: winskill\ndescription: \"Windows 服务器运维工具箱 - 磁盘体检（统一入口）、临时文件清理、IIS 站点管理、批量文件操作、服务状态监控、Windows Update 诊断、实时性能监控、安全审计、注册表启动项审计、磁盘健康检测、网络端口监控、事件日志诊断、已安装程序管理、用户会话监控、计划任务审计、文件共享审计、DNS网卡诊断、SSL证书过期检测、防火墙规则审计、服务崩溃恢复状态、系统文件修复、存储池管理、备份状态检查、Docker容器管理、K8s集群监控、自动化修复向导、性能基线与趋势分析、等保合规检查清单、远程多服务器管理、日志轮转、模块索引、轻量常驻监控、趋势预测、告警推送、模糊重复检测、三级清理建议。只读分析+安全确认，绝不误删文件，完全免费离线运行。\"\nversion: 3.4.0\n---\n\n\n# Winskill — Windows 服务器运维工具箱\n\n## 快速开始\n\n**直接对 AI 说就行，不用记命令。**\n\n| 你想做什么 | 直接对 AI 说 |\n|-----------|-------------|\n| 看磁盘空间 | `\"帮我扫一下 D 盘大文件\"` |\n| 磁盘体检（推荐） | `\"帮我看看磁盘\"` |\n| 清理临时文件 | `\"看看我电脑的临时文件\"` |\n| 检查 IIS | `\"我的 IIS 站点还活着吗？\"` |\n| 检测重复文件 | `\"帮我找下重复文件\"` |\n| 检查服务状态 | `\"看下数据库和 IIS 服务有没有挂\"` |\n| Windows Update 状态 | `\"Windows Update 正常吗？有积压补丁吗？\"` |\n| 服务器卡顿定位 | `\"服务器变卡了，帮我看看是什么原因\"` |\n| 检查有没有被入侵 | `\"帮我查一下有没有异常登录\"` |\n| 检查可疑启动项 | `\"有没有可疑的自启动程序\"` |\n| 磁盘健康状态 | `\"硬盘还健康吗？有没有坏道\"` |\n| 网络连接监控 | `\"谁在连我的服务器\"` |\n| 系统日志哪里错了 | `\"系统日志有没有最近的错误\"` |\n| 服务器装了什么程序 | `\"看看系统安装了哪些软件\"` |\n| 谁在服务器上 | `\"当前有谁登录了服务器\"` |\n| 检查计划任务 | `\"有没有可疑的计划任务\"` |\n| 文件共享审计 | `\"有哪些共享文件夹，权限安全吗\"` |\n| DNS / 网卡诊断 | `\"DNS 解析正常吗\"` |\n| 搞不定了 | `\"我遇到报错了，帮我看看\"` |\n\n> ⚠️ **AI 必须遵守**：凡涉及删除、停止服务、修改系统的操作，必须先展示操作清单，等用户明确说\"确认执行\"后才可执行。\n\n---\n\n## 安全声明\n\n| 保护项 | 方式 |\n|-------|------|\n| 系统目录保护 | 绝不操作 `C:\\Windows`、`C:\\Program Files` 等 |\n| 删除必须确认 | 先展示受影响文件，等用户说\"确认清理\"后才执行 |\n| 回收站优先 | 删除用 `Shell.Application` 回收站 API |\n| 只读诊断 | 所有分析命令不修改任何文件/服务/注册表 |\n| 排除保护 | `pagefile.sys`、`hiberfil.sys` 等系统文件不可操作 |\n| 注册表保护 | 注册表分析只读，任何修改需双重确认 |\n| 日志读取保护 | 事件日志只读查看，不修改任何日志记录 |\n\n---\n\n## 功能模块\n\n### 📋 日志记录与轮转\n\n```powershell\nfunction Write-WinskillLog {\n    param([string]$Message)\n    $logDir = \"$env:USERPROFILE\\.workbuddy\\output\\winskill\"\n    $logFile = Join-Path $logDir \"winskill.log\"\n    New-Item -ItemType Directory -Force -Path $logDir | Out-Null\n    $timestamp = Get-Date -Format \"yyyy-MM-dd HH:mm:ss\"\n    \"$timestamp $Message\" | Out-File $logFile -Append -Encoding utf8\n    if (Test-Path $logFile) {\n        $size = (Get-Item $logFile).Length\n        if ($size -gt 10MB) {\n            $timestamp = Get-Date -Format \"yyyyMMddHHmmss\"\n            Move-Item $logFile \"winskill.log.$timestamp\" -Force\n        }\n    }\n    Get-ChildItem $logDir -Filter \"winskill.log.*\" | Where-Object {\n        $_.LastWriteTime -lt (Get-Date).AddDays(-7)\n    } | Remove-Item -Force\n}\n```\n\n### 📋 模块索引（一键列出所有可用操作）\n\n```powershell\nWrite-Host \"`n📋 Winskill 3.4.0 - 模块索引（共 34 个模块）\"\nWrite-Host (\"=\" * 60)\nWrite-Host (\"{0,-25} {1,-35}\" -f \"模块\", \"用途\")\nWrite-Host (\"-\" * 60)\n$modules = @(\n    \"模块 1: 磁盘空间分析 - 扫大文件/目录占用\",\n    \"模块 2: 大文件重复检测 - 找重复文件\",\n    \"模块 3: 临时文件安全清理 - 清理临时文件\",\n    \"模块 4: IIS 站点管理 - IIS 站点/应用池状态\",\n    \"模块 5: 服务状态监控 - Windows 服务状态\",\n    \"模块 6: 批量文件操作 - 批量重命名/移动/复制\",\n    \"模块 7: 目录磁盘使用报告 - 目录大小报告\",\n    \"模块 8: Windows Update 服务状态 - 更新服务/缓存\",\n    \"模块 9: 实时性能监控 - CPU/内存/磁盘/网络\",\n    \"模块 10: 安全审计与日志分析 - 暴力破解/特权操作\",\n    \"模块 11: 注册表与启动项安全审计 - 启动项/WMI\",\n    \"模块 12: 磁盘健康状态检测 - SMART/坏道/温度\",\n    \"模块 13: 网络连接与端口监控 - 连接/端口/防火墙\",\n    \"模块 14: Windows 事件日志诊断 - 系统/应用日志\",\n    \"模块 15: 已安装程序与补丁管理 - 程序/补丁清单\",\n    \"模块 1"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7chdrwbdhaqkwajcyhtfvjx989ddb1\",\n  \"slug\": \"winskill\",\n  \"version\": \"3.4.0\",\n  \"publishedAt\": 1791514376371\n}"},{"path":"references/compliance/cis-benchmark.yaml","content":"---\nversion: \"1.0.0\"\nupdated: \"2026-08-24\"\nstandard: \"CIS Benchmark\"\ndescription: \"Center for Internet Security - Windows Server 安全基线（精选关键控制项）\"\n---\n\nitems:\n  - id: \"CIS-1.1.1\"\n    category: 密码策略\n    item: 密码最小长度≥14\n    level: Level 1\n    module: module-05\n    check: \"net accounts | Select-String 'Minimum password length'\"\n    expected: \">= 14\"\n\n  - id: \"CIS-1.1.2\"\n    category: 密码策略\n    item: 密码复杂度已启用\n    level: Level 1\n    module: module-05\n    check: \"Get-ItemProperty -Path 'HKLM:\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\Lsa' -Name PasswordComplexity\"\n    expected: \"PasswordComplexity = 1\"\n\n  - id: \"CIS-2.2.1\"\n    category: 账户策略\n    item: Guest 账户已禁用\n    level: Level 1\n    module: module-16\n    check: \"Get-LocalUser -Name 'Guest' | Select-Object Enabled\"\n    expected: \"Enabled = False\"\n\n  - id: \"CIS-2.3.1.1\"\n    category: 登录策略\n    item: 限制空密码登录\n    level: Level 1\n    module: module-16\n    check: \"Get-ItemProperty -Path 'HKLM:\\\\SYSTEM\\\\CurrentControlSet\\\\Control\\\\Lsa' -Name LimitBlankPasswordUse\"\n    expected: \"LimitBlankPasswordUse = 1\"\n\n  - id: \"CIS-5.1\"\n    category: 系统服务\n    item: Windows Update 服务运行中\n    level: Level 1\n    module: module-08\n    check: \"Get-Service -Name wuauserv | Select-Object Status\"\n    expected: \"Status = Running\"\n\n  - id: \"CIS-9.1\"\n    category: 防火墙\n    item: 所有防火墙配置文件已启用\n    level: Level 1\n    module: module-21\n    check: \"Get-NetFirewallProfile | Select-Object Name, Enabled\"\n    expected: \"全部 Enabled = True\"\n\n  - id: \"CIS-17.1\"\n    category: 审计策略\n    item: 登录事件审计（成功+失败）\n    level: Level 1\n    module: module-10\n    check: \"auditpol /get /subcategory:'Logon'\"\n    expected: \"Success and Failure\""},{"path":"references/compliance/dp-2.0.yaml","content":"---\nversion: \"1.0.0\"\nupdated: \"2026-08-24\"\nstandard: \"等保 2.0\"\ndescription: \"信息安全技术 网络安全等级保护基本要求（GB/T 22239-2019）\"\n---\n\nitems:\n  - id: \"DP-2.0-001\"\n    category: 密码策略\n    item: 密码最小长度≥8\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Minimum password length'\"\n    expected: \">= 8\"\n\n  - id: \"DP-2.0-002\"\n    category: 密码策略\n    item: 密码最长使用期限≤90天\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Maximum password age'\"\n    expected: \"<= 90 或 Non-never\"\n\n  - id: \"DP-2.0-003\"\n    category: 密码策略\n    item: 密码历史记录≥5\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Password history length'\"\n    expected: \">= 5\"\n\n  - id: \"DP-2.0-004\"\n    category: 账户锁定\n    item: 锁定阈值≤5次\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Lockout threshold'\"\n    expected: \"<= 5 且非 Never\"\n\n  - id: \"DP-2.0-005\"\n    category: 账户锁定\n    item: 锁定时间≥15分钟\n    level: 必级\n    module: module-05\n    check: \"net accounts | Select-String 'Lockout duration'\"\n    expected: \">= 15 且非 Never\"\n\n  - id: \"DP-2.0-006\"\n    category: 审计日志\n    item: 登录事件审计（成功+失败）\n    level: 必级\n    module: module-10\n    check: \"auditpol /get /subcategory:'Logon'\"\n    expected: \"Success and Failure\"\n\n  - id: \"DP-2.0-007\"\n    category: 审计日志\n    item: 对象访问审计（成功+失败）\n    level: 必级\n    module: module-10\n    check: \"auditpol /get /subcategory:'Object Access'\"\n    expected: \"Success and Failure\"\n\n  - id: \"DP-2.0-008\"\n    category: 防火墙\n    item: 所有配置文件已启用防火墙\n    level: 必级\n    module: module-21\n    check: \"Get-NetFirewallProfile | Select-Object Name, Enabled\"\n    expected: \"全部 Enabled = True\"\n\n  - id: \"DP-2.0-009\"\n    category: 补丁更新\n    item: 最近 30 天内有补丁更新\n    level: 必级\n    module: module-15\n    check: \"Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 1\"\n    expected: \"InstalledOn 距今 <= 30 天\"\n\n  - id: \"DP-2.0-010\"\n    category: 远程桌面\n    item: RDP 网络级身份验证（NLA）\n    level: 必级\n    module: module-16\n    check: \"Get-ItemProperty -Path 'HKLM:\\\\System\\\\CurrentControlSet\\\\Control\\\\Terminal Server\\\\WinStations\\\\RDP-Tcp' -Name UserAuthentication\"\n    expected: \"UserAuthentication = 1\""},{"path":"references/modules/module-01-磁盘空间分析.md","content":"---\r\nid: module-01\r\nname: 磁盘空间分析\r\ndescription: 扫描指定路径，找出占用空间的大文件和目录。\r\nkeywords: ['扫一下 C 盘大文件', 'D 盘哪个最占空间']\r\npermission: admin\r\nmode: readonly\r\nsubset: disk-management\r\n---\r\n\r\n### 模块 1：磁盘空间分析\r\n\r\n> ⚠️ 此模块已合并到 **模块 34「磁盘体检」**。直接对 AI 说「帮我看看磁盘」即可获取完整报告。本模块代码保留，避免外部脚本失效。\r\n\r\n\r\n\r\n\r\n\r\n\r\n<details>\r\n<summary>📋 展开查看：模块 1：磁盘空间分析</summary>\r\n\r\n**用途**：扫描指定路径，找出占用空间的大文件和目录。\r\n\r\n**常你说**：`\"扫一下 C 盘大文件\"` / `\"D 盘哪个最占空间\"`\r\n\r\n\r\n\r\n\r\n```powershell\r\n$scanPath = \"C:\\\"   # ← 改成你要扫的盘符或目录\r\n\r\nGet-ChildItem -Path $scanPath -Recurse -File -ErrorAction SilentlyContinue |\r\n    Where-Object { $_.Length -gt 100MB } |\r\n    Sort-Object Length -Descending |\r\n    Select-Object -First 50 @{N='路径';E={$_.FullName}},\r\n        @{N='大小(GB)';E={[math]::Round($_.Length/1GB,2)}},\r\n        @{N='最后修改';E={$_.LastWriteTime}}\r\n```\r\n\r\n\r\n\r\n**风险等级**：🟢 无（只读）\r\n\r\n| 报错 | 含义 | 解决 |\r\n|-----|------|-----|\r\n| `Access to the path 'xxx' is denied` | 权限不足 | 管理员身份运行 PowerShell |\r\n| `Could not find a part of the path` | 目录不存在 | 确认路径 |\r\n\r\n\r\n\r\n\r\n</details>\r\n\r\n[↑ 返回顶部](#module-1)\r\n\r\n---\r\n\r\n<a name=\"module-2\"></a>"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Windows 服务器运维工具箱 - 磁盘体检（统一入口）、临时文件清理、IIS 站点管理、批量文件操作、服务状态监控、Windows Update 诊断、实时性能监控、安全审计、注册表启动项审计、磁盘健康检测、网络端口监控、事件日志诊断、已安装程序管理、用户会话监控、计划任务审计、文件共享审计、DNS网卡诊断、SSL证书过期检测、防火墙规则审计、服务崩溃恢复状态、系统文件修复、存储池管理、备份状态检查、Docker容器管理、K8s集群监控、自动化修复向导、性能基线与趋势分析、等保合规检查清单、远程多服务器管理、日志轮转、模块索引、轻量常驻监控、趋势预测、告警推送、模糊重复检测、三级清理建议。只读分析+安全确认，绝不误删文件，完全免费离线运行。 Skill: winskill Owner: fyniujin Summary: Windows 服务器运维工具箱 - 磁盘体检（统一入口）、临时文件清理、IIS 站点管理、批量文件操作、服务状态监控、Windows Update 诊断、实时性能监控、安全审计、注册表启动项审计、磁盘健康检测、网络端口监控、事件日志诊断、已安装程序管理、用户会话监控、计划任务审计、文件共享审计、DNS网卡诊断、SSL证书过期检测、防火墙规则审计、服务崩溃恢复状态、系统文件修复、存储池管理、备份状态检查、Docker容器管理、K8s集群监控、自动化修复向导、性能基线与趋势分析、等保合规检查清单、远程多服务器管理、日志轮转、模块索引、轻量常驻监控、趋势预测、告警推送、模糊重复检测、三级清理建议。只读分析+安全确认，绝不误删文件，完全免费离线运行。 Tags: latest:3.4.0 Version history: v3.4.0 | 2026-10","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":496,"uniquenessScore":66,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T07:34:50.694Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T07:34:50.694Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:43:36.851Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}