# deep-ops **Repository Path**: lighter_cd_admin/deep-ops ## Basic Information - **Project Name**: deep-ops - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-10 - **Last Updated**: 2025-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Deep-Ops Windows 远程操作自动化工具,基于 WinRM 协议实现对远程 Windows 机器的批量管理和操作。 ## 🚀 功能特性 - **交互式操作**: 基于 inquirer 的友好命令行界面 - **远程执行**: 通过 WinRM 协议安全地执行 PowerShell 脚本 - **动态能力**: 模块化的操作意图,支持动态加载和扩展 - **智能学习**: 记录用户操作模式,提供智能建议 - **错误处理**: 完善的错误检测和恢复机制 - **统一包装**: 远端脚本统一包装,提供日志、错误处理和检查点 ## 📁 项目结构 ``` deep-ops/ ├─ src/ │ ├─ cli.ts # 入口,inquirer 交互 │ ├─ exec.ts # WinRM 远程执行 + 错误码 │ ├─ intents/ # 每文件=一条"RUN" │ │ ├─ install-docker.ts │ │ ├─ enable-hyperv.ts │ │ ├─ open-port.ts │ │ ├─ create-ad-user.ts │ │ ├─ join-domain.ts │ │ └─ prune-system.ts │ ├─ abilities.ts # 动态能力货架 │ ├─ learn.ts # 用户教一次即持久化 │ └─ types.ts # 通用类型 ├─ config/ │ └─ default.yaml # WinRM、日志、正则库 ├─ scripts/ │ └─ powershell/ │ ├─ remote-wrapper.ps1# 远端统一包装(错误、日志、检查点) ├─ abilities.json # 运行期自动生成 ├─ tsconfig.json ├─ package.json └─ README.md ``` ## 🛠️ 内置能力 ### Docker 管理 - **install-docker**: 在 Windows 机器上安装 Docker Desktop ### 虚拟化管理 - **enable-hyperv**: 启用 Windows Hyper-V 功能 ### 网络安全 - **open-port**: 在 Windows 防火墙中开放指定端口 ### Active Directory 管理 - **create-ad-user**: 在 Active Directory 中创建新用户 - **join-domain**: 将计算机加入 Active Directory 域 ### 系统维护 - **prune-system**: 清理系统临时文件、缓存和不必要的组件 ## 🔧 安装 ```bash # 克隆项目 git clone cd deep-ops # 安装依赖 npm install # 构建项目 npm run build # 全局安装 npm install -g . ``` ## 📖 使用方法 ### 交互式运行 ```bash # 启动交互式界面 deep-ops run # 指定目标主机 deep-ops run --host 192.168.1.100 --username admin # 预览模式(不实际执行) deep-ops run --dry-run # 详细输出 deep-ops run --verbose ``` ### 列出可用能力 ```bash deep-ops list ``` ### 学习新操作 ```bash deep-ops learn my-custom-operation ``` ## ⚙️ 配置 主配置文件位于 `config/default.yaml`,包含以下配置项: ### WinRM 配置 ```yaml winrm: host: "localhost" port: 5985 protocol: "http" timeout: 30000 username: "" password: "" ``` ### 日志配置 ```yaml logging: level: "info" file: "logs/deep-ops.log" console: true ``` ### 安全配置 ```yaml security: allowUnsafeOperations: false requireConfirmation: - "join-domain" - "create-ad-user" - "prune-system" ``` ## 🔐 安全要求 ### 目标机器要求 1. **启用 WinRM 服务**: ```powershell # 在目标机器上执行 Enable-PSRemoting -Force Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force ``` 2. **配置防火墙**: ```powershell # 允许 WinRM 通过防火墙 New-NetFirewallRule -DisplayName "WinRM HTTP" -Direction Inbound -Protocol TCP -LocalPort 5985 -Action Allow ``` 3. **用户权限**: 执行用户需要目标机器的管理员权限 ### 网络要求 - 确保管理机器能够访问目标机器的 WinRM 端口(默认 5985/5986) - 如果使用域环境,建议配置 Kerberos 认证 - 生产环境建议使用 HTTPS(端口 5986) ## 🎯 使用场景 ### 1. 批量部署 Docker 环境 ```bash # 在多台机器上安装 Docker deep-ops run # 选择 "Docker 管理" -> "安装 Docker" ``` ### 2. 域环境批量配置 ```bash # 批量将机器加入域 deep-ops run # 选择 "Active Directory 管理" -> "加入域" ``` ### 3. 系统维护 ```bash # 批量清理系统垃圾文件 deep-ops run # 选择 "系统维护" -> "清理系统" ``` ## 🔄 工作流程 1. **连接建立**: 通过 WinRM 连接到目标机器 2. **环境检查**: 验证目标机器的环境和权限 3. **脚本包装**: 使用统一包装器增强脚本执行 4. **执行监控**: 实时监控执行状态和进度 5. **结果分析**: 解析执行结果,提取有用信息 6. **学习记录**: 记录操作模式,用于未来优化 ## 📊 执行报告 每次执行后会生成详细的报告,包含: - 执行时间和性能数据 - 成功/失败的操作步骤 - 错误详情和建议 - 检查点和中间状态 - 系统变更记录 ## 🔍 故障排除 ### 连接问题 - 检查 WinRM 服务是否启动 - 验证网络连通性和端口开放 - 确认用户权限和认证信息 ### 执行失败 - 查看详细的错误日志 - 检查目标机器的执行环境 - 验证脚本权限和依赖项 ### 性能问题 - 调整超时设置 - 减少并发操作数量 - 优化脚本执行逻辑 ## 🤝 扩展开发 ### 添加新的意图 1. 在 `src/intents/` 目录下创建新文件 2. 实现 `Intent` 接口 3. 在 `abilities.ts` 中注册新意图 4. 更新能力配置 示例: ```typescript export class MyCustomIntent implements Intent { name = 'my-custom'; description = '我的自定义操作'; async execute(context: IntentContext): Promise { // 实现具体逻辑 } } ``` ### 添加新的能力 在 `abilities.json` 中添加能力定义: ```json { "id": "my-capability", "name": "我的能力", "description": "自定义能力描述", "intents": ["my-custom"], "platforms": ["Windows"], "version": "1.0.0" } ``` ## 📝 开发规范 - 所有 PowerShell 脚本必须包含错误处理 - 使用统一的日志格式和检查点 - 提供详细的操作描述和参数验证 - 支持预览模式(dry-run) - 遵循最小权限原则 ## 📄 许可证 MIT License ## 🆘 支持 如果遇到问题或需要功能建议,请: 1. 查看故障排除指南 2. 检查 GitHub Issues 3. 提交新的 Issue 或 Pull Request ## 🔄 版本历史 - **v1.0.0**: 初始版本,包含基础功能和内置意图 - 更多版本信息请查看 CHANGELOG.md