我正在使用Azure DevOps将PowerShell模块部署到服务器。此发布任务将模块部署到目录C:\Windows\System32\WindowsPowerShell\v1.0\Modules\
。将模块成功部署到此文件夹后,我就可以使用它们。
如果我修改其中一个模块并重新发布,则C:\Windows\System32\WindowsPowerShell\v1.0\Modules\
中的文件将被更新,但是当使用pwsh
从批处理文件运行时,仍使用模块的旧版本。
我发现模块文件也存在于以下路径中:
使用Azure DevOps部署新版本时,对以上两个目录中的旧版本进行了[[not更新。在这些位置手动更新模块可以解决此问题。
为什么将模块文件复制到另外两个路径中?部署新版本的模块后,这些副本是否应被覆盖?在这种情况下,部署模块的正确方法是什么?$env:PSModulePath -split ";"
知道正在使用的路径。每个路径之间的区别在于用户范围和使用范围(例如,针对自定义模块或Windows官方模块)。现在,默认情况下,
PS在所有路径上查找每个模块的最新版本。因此,也许正在运行旧版本,因为在您重新部署时。您没有在Module Manifest中更新模块版本,因此,如果PS看到它们是“相同”版本,它将在PSModulePath上加载最后一个版本。
[查看此精彩文章以了解更多详细信息:Everything you wanted to know about PowerShell's Module Path现在您的问题。
这可能是服务器配置或您用于部署的脚本。
不一定,如果版本维护正确。在帖子中,共享内容说明了如何检查每个模块的版本。