已定义ModuleVersion,PowerShell模块版本却始终显示0.0?
解决PowerShell模块及命令版本显示为0.0的问题
一、修复模块版本显示问题
- 确认模块清单配置规范
检查Confluence.psd1中的ModuleVersion必须为字符串格式的语义化版本(如'1.0'或'1.0.0'),不能使用整数。同时确保模块目录结构合规:模块目录名需与清单文件名一致(例如Confluence目录下存放Confluence.psd1及对应脚本文件)。 - 强制重载模块
内存中可能残留旧模块实例,执行以下命令卸载并重新导入:Remove-Module Confluence -Force Import-Module Confluence -Force - 清理模块缓存
若上述操作无效,删除PowerShell模块缓存文件:- Windows路径:
C:\Users\<你的用户名>\AppData\Local\Microsoft\Windows\PowerShell\ModuleAnalysisCache - Linux/macOS路径:
~/.cache/powershell/ModuleAnalysisCache
删除后重启PowerShell再重新导入模块。
- Windows路径:
二、修复命令(函数/Cmdlet)版本显示问题
PowerShell函数不会自动继承模块版本,需手动为每个函数添加版本属性:
- 在函数定义中添加版本标记
修改函数代码,通过CmdletBinding指定版本:function Get-ConfluencePage { [CmdletBinding(Version = '1.0')] param( # 此处写参数定义 ) # 函数逻辑代码 } - 批量统一配置(可选)
若希望所有命令同步模块版本,可在Confluence.psd1的FunctionsToExport中结合模块版本动态配置,但最可靠的方式仍是直接在函数上标注版本。
完成上述操作后,重新执行Get-Module Confluence和Get-Command -Module Confluence,即可看到正确的版本号。
内容的提问来源于stack exchange,提问作者jeremywat
相关产品推荐
相关产品推荐

