PowerShell模块部署重复项

问题描述 投票:2回答:1

我正在使用Azure DevOps将PowerShell模块部署到服务器。此发布任务将模块部署到目录C:\Windows\System32\WindowsPowerShell\v1.0\Modules\。将模块成功部署到此文件夹后,我就可以使用它们。

如果我修改其中一个模块并重新发布,则C:\Windows\System32\WindowsPowerShell\v1.0\Modules\中的文件将被更新,但是当使用pwsh从批处理文件运行时,仍使用模块的旧版本。

我发现模块文件也存在于以下路径中:

  • C:\ Program Files \ PowerShell \ Modules \
  • C:\ Program Files \ PowerShell \ 6 \ Modules \

使用Azure DevOps部署新版本时,对以上两个目录中的旧版本进行了[[not更新。在这些位置手动更新模块可以解决此问题。

为什么将模块文件复制到另外两个路径中?部署新版本的模块后,这些副本是否应被覆盖?在这种情况下,部署模块的正确方法是什么?
powershell powershell-module
1个回答
1
投票
Powershell使用不同的路径来加载模块。用$env:PSModulePath -split ";"知道正在使用的路径。每个路径之间的区别在于用户范围和使用范围(例如,针对自定义模块或Windows官方模块)。

现在,默认情况下,

PS在所有路径上查找每个模块的最新版本。因此,也许正在运行旧版本,因为在您重新部署时。您没有在Module Manifest中更新模块版本,因此,如果PS看到它们是“相同”版本,它将在PSModulePath上加载最后一个版本。

[查看此精彩文章以了解更多详细信息:Everything you wanted to know about PowerShell's Module Path

现在您的问题。

  • 为什么将模块文件复制到另外两个路径中?

    这可能是服务器配置或您用于部署的脚本。

  • 部署新版本的模块后,这些副本是否应被覆盖?

    不一定,如果版本维护正确。在帖子中,共享内容说明了如何检查每个模块的版本。

© www.soinside.com 2019 - 2024. All rights reserved.