如何将C#编写的Cmdlet dll加入现有PowerShell模块清单随模块一同发布
正确配置步骤
1. 调整模块清单(.psd1文件)配置
原有RootModule = 'Module1.psm1'配置无需修改,新增以下两个配置项即可:
- 新增
RequiredAssemblies字段,指定C# Cmdlet编译生成的dll路径,路径为相对于模块清单文件的相对路径:
# 模块依赖的程序集列表,PowerShell导入模块时会自动加载 RequiredAssemblies = @('bin\Cmdlet1.dll')
- (推荐)显式声明导出的C# Cmdlet名称,提升模块加载和命令发现性能:
# 原有FunctionsToExport保留不变,新增/修改CmdletsToExport字段 CmdletsToExport = @('你的C# Cmdlet的实际命令名') # 不确定Cmdlet名称时可临时填写通配符`*`,调试确认后替换为具体名称
2. 现有导入逻辑适配说明
你当前Module1.psm1里的函数遍历导入、导出逻辑完全不需要修改,PowerShell会在模块导入阶段自动加载RequiredAssemblies指定的程序集,注册其中实现的Cmdlet,不需要额外写加载dll的代码。
验证方式
修改完成后重新导入模块,执行Get-Command -Module Module1,返回结果中会同时包含原有PowerShell函数和新增的C# Cmdlet,即配置成功。
内容的提问来源于stack exchange,提问作者R-nold
相关产品推荐
相关产品推荐

