PowerShell模块部署复制
我正在使用Azure DevOps将PowerShell模块部署到服务器。此发布任务将模块部署到目录PowerShell模块部署复制,powershell,powershell-module,Powershell,Powershell Module,我正在使用Azure DevOps将PowerShell模块部署到服务器。此发布任务将模块部署到目录C:\Windows\System32\WindowsPowerShell\v1.0\modules\。一旦这些模块成功部署到此文件夹中,我就能够使用它们 如果我修改其中一个模块并重新发布它,C:\Windows\System32\WindowsPowerShell\v1.0\modules\中的文件将得到更新,但是当使用pwsh从批处理文件运行时,仍然使用该模块的旧版本 我发现模块文件也存在于以
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\
在这种情况下,部署模块的正确方法是什么?Powershell使用不同的路径加载模块。使用
$env:PSModulePath-split”;“
了解正在使用的路径。
每个路径之间的差异是用户范围和使用范围(例如,针对自定义模块或windows官方模块)
现在,默认情况下,PS在所有路径中查找每个模块的最新版本。因此,可能旧版本正在运行,因为在重新部署时。您没有更新模块清单中的模块版本,因此,如果PS看到它们是“相同”版本,则会在PSModulePath上加载最后一个版本
有关更多详细信息,请查看这篇精彩文章:
现在谈谈你的问题
- 为什么要将模块文件复制到这两个附加路径中 这可能是服务器配置或用于部署的脚本
- 部署新版本的模块时是否应覆盖这些副本 如果版本维护正确,则不一定如此。在帖子上,分享了如何检查每个模块的版本