Import-Module执行成功但始终运行旧版本PowerShell模块问题求助
PowerShell自定义模块修改后不生效排查方案
核心原因及解决方法
- 会话模块缓存未刷新
PowerShell会将已导入的模块缓存到当前会话内存中,默认执行Import-Module导入同名模块时,会直接复用内存中已加载的旧版本,不会读取磁盘上更新后的文件。
解决方法:导入时添加-Force参数强制刷新
也可以先卸载现有模块再重新导入:Import-Module Get-Phone -ForceRemove-Module Get-Phone Import-Module Get-Phone - 加载了其他路径下的旧版本模块
PowerShell会按照$env:PSModulePath环境变量的路径顺序查找模块,可能存在其他路径下的旧版本Get-Phone模块被优先加载。
排查方法:执行以下命令查看当前加载的模块实际路径,确认是否是你修改的目标文件
也可以列出所有可用的该模块版本:(Get-Module Get-Phone).Path
确认返回的路径和版本信息后,删除多余的旧版本模块即可。Get-Module -ListAvailable Get-Phone - 修改的文件未正确保存
确认你编辑的Get-Phone.psm1文件已经保存生效,部分编辑器会保留未存盘的临时修改,实际磁盘上的文件还是旧版本内容。 - 模块版本号约束问题
如果你的模块配置了版本号(对应同目录下的.psd1模块清单文件),导入时如果指定了低版本号,也会加载旧版本。你可以直接删除旧的psd1文件,或者更新psd1中的版本号后再导入。
内容的提问来源于stack exchange,提问作者ryan broman
相关产品推荐
相关产品推荐

