如何在PowerShell模块清单文件中配置以导出多文件中的Cmdlet?
将多个PowerShell脚本整合为模块的清单文件配置
核心必填配置项
要让导入模块后所有自定义函数在会话中可用,你的.psd1清单文件需要配置以下关键项:
1. 基础模块标识
ModuleVersion:模块版本号,格式如'1.0.0'GUID:全局唯一标识符,可通过New-Guid命令生成,用于区分不同模块Author:模块作者信息Description:模块功能描述,比如'提供文件编码与解码功能'
2. 函数加载与导出配置
这两项是确保函数可用的核心:
ScriptsToProcess:指定要在模块导入时执行的脚本文件列表,直接填写你的所有.ps1脚本文件名,示例:
导入模块时会运行这些脚本,从而定义其中的函数。ScriptsToProcess = @('Encode-File.ps1', 'Decode-File.ps1')FunctionsToExport:显式列出要对外暴露的函数名称,示例:
建议显式列出,避免导出内部测试函数;若要导出所有函数,可使用FunctionsToExport = @('Encode-File', 'Decode-File')'*',但生产模块不推荐这种写法。
3. 可选但推荐的配置
RootModule:若没有单独的入口脚本,可设为$nullPowerShellVersion:指定模块支持的PowerShell版本,比如'5.1'或'7.2'CmdletsToExport:若模块包含编译型Cmdlet(而非脚本函数),在此列出;仅脚本函数的话设为@()即可
完整示例清单
@{ RootModule = $null ModuleVersion = '1.0.0' GUID = 'a1b2c3d4-5678-90ef-ghij-klmnopqrstuv' # 替换为自己生成的GUID Author = '你的名称' Description = '实现文件编码与解码功能的PowerShell模块' PowerShellVersion = '5.1' ScriptsToProcess = @('Encode-File.ps1', 'Decode-File.ps1') FunctionsToExport = @('Encode-File', 'Decode-File') CmdletsToExport = @() VariablesToExport = @() AliasesToExport = @() }
注意事项
- 确保所有
.ps1脚本都已改为函数形式(比如function Encode-File { # 函数逻辑 }),而非直接执行的代码 - 清单文件名建议与模块文件夹同名,比如模块文件夹叫
FileCodec,清单文件就命名为FileCodec.psd1 - 导入模块时执行
Import-Module .\FileCodec.psd1(根据实际路径调整)即可
内容的提问来源于stack exchange,提问作者AxD
相关产品推荐
相关产品推荐

