用途
PowerShell Module Architect 提供 PowerShell 模块设计与架构方面的专业能力,重点在于创建结构化、可复用且易于维护的 PowerShell 模块。它面向企业 PowerShell 环境,关注模块架构、函数设计、跨版本兼容性以及配置文件(Profile)优化。
主要能力
- 将零散脚本转化为结构化、可复用的模块
- 设计模块架构,实现公共(Public)与私有(Private)函数分离
- 创建跨版本兼容的模块(PowerShell 5.1 与 7+)
- 优化 PowerShell 配置文件以加快加载速度
- 构建带正确参数验证的高级函数
使用方式
在以下情况调用该技能:
- 将零散脚本转化为结构化、可复用的模块
- 设计模块架构,实现公共/私有函数分离
- 创建跨版本兼容的模块(PowerShell 5.1 与 7+)
- 优化 PowerShell 配置文件以加快加载速度
- 构建带正确参数验证的高级函数
不要在以下情况调用:
- 不会复用的简单一次性脚本(改用 powershell-5.1-expert 或 powershell-7-expert)
- 已有结构良好的模块、仅需添加功能(改用相关领域技能)
- UI 开发(改用 powershell-ui-architect)
- 安全加固(改用 powershell-security-hardening)
决策框架
何时创建模块:
- 3 个以上相关函数:创建模块
- 需要跨团队共享:创建模块 + 清单(manifest)
- 一次性自动化:保留为脚本
- 复杂参数集:模块中的高级函数
- 需要版本兼容:带兼容层的模块
模块结构决策:
- 少量相关函数(3-10 个):单个 .psm1,内联函数
- 大量函数(10+):点源(dot-source)模式(Public/Private 文件夹)
- 发布到 Gallery:完整清单 + 测试 + 文档
- 团队协作:Git 仓库 + CI/CD + Pester 测试
核心工作流:将脚本转化为模块
适用场景:将 10-50 个零散的 .ps1 脚本重构为有组织的模块。
步骤 1:分析。清点现有脚本并分析函数签名,例如使用 Get-ChildItem 递归查找 .ps1 文件,再用正则匹配 function 定义,统计每个脚本的函数数量,识别可作为 Private 的公共辅助函数。
步骤 2:设计模块结构。创建模块骨架,包括 Public、Private、Tests 目录以及 .psm1 和 .psd1 文件。
步骤 3:分类函数。将面向用户的函数归为 Public(如 Get-OrgADUser、New-OrgADUser、Set-OrgADUser、Remove-OrgADUser),将内部辅助函数归为 Private(如 _ValidateDomainConnection、_BuildDistinguishedName、_ConvertToCanonicalName)。
步骤 4:实现模块文件。在 .psm1 中先点源 Private 函数,再点源 Public 函数,并通过 Export-ModuleMember 显式导出公共函数。
步骤 5:创建模块清单。使用 New-ModuleManifest 生成 .psd1,设置 RootModule、ModuleVersion、Author、CompanyName、Description、PowerShellVersion(最低版本)以及 FunctionsToExport 等。
步骤 6:添加 Pester 测试。在 Tests 目录中编写测试,验证模块导出的函数、清单有效性以及函数参数接受情况。
高级函数模板
提供带 CmdletBinding、参数验证(ValidateNotNullOrEmpty)、支持管道输入(ValueFromPipeline)以及完整帮助注释(SYNOPSIS、DESCRIPTION、PARAMETER、EXAMPLE)的高级函数模板,例如 Get-OrgUser。
集成模式
- powershell-5.1-expert:模块架构设计完成后,由 5.1 专家实现 Windows 特定功能;在模块结构决策时考虑 5.1 兼容性。
- powershell-7-expert:模块结构定义后,由 7 专家添加现代语法优化;协作实现基于版本检测的双模式函数。
- windows-infra-admin:模块架构交由 Windows 管理员实现领域特定逻辑;共同负责 Active Directory、GPO、DNS 模块函数。
- azure-infra-engineer:模块模式交由 Azure 工程师构建云自动化模块;集成结合本地与 Azure 的跨云模块。
升级信号
- 单个模块中函数超过 100 个:考虑拆分为子模块
- 复杂的跨版本问题:咨询 powershell-5.1 与 7 专家
- 配置文件加载性能低于 1 秒:应用延迟加载模式
- 安全敏感操作:引入 powershell-security-hardening
附加资源
- 详细技术参考:见 REFERENCE.md,包含配置文件优化工作流、模块清单模板、动态参数模式
- 代码示例与模式:见 EXAMPLES.md,包含反模式(单体文件、缺少帮助)、跨版本兼容模式、高级参数验证
限制
资料未提供该技能的具体收费、价格、平台支持范围或实际效果数据,暂未提供。