gpt4 book ai didi

powershell - 在 Powershell 中,有没有办法确保 #Requires -Modules 始终加载最新的更改?

转载 作者:行者123 更新时间:2023-12-02 00:56:04 24 4
gpt4 key购买 nike

我有一个 Powershell(5.1 版)模块,我刚刚添加了一个新函数,但它不会出现在调用 Powershell 脚本中。

我创建了一个模块,比如说 myModule.psm1,并显示了 myModule.psd1。 list 具有以下设置:

FunctionsToExport = '*'
CmdletsToExport = '*'
VariablesToExport = '*'
AliasesToExport = '*'

myModule.psm1 位于我的 PSModulePath 路径的 myModule 目录中。我还明确地将 myModule 的完全限定路径添加到 PSModulePath。

在我的调用 Powershell 脚本中,我在文件顶部有 #Requires -Modules myModule

如果我向 myModule 添加函数,调用脚本似乎不会加载更改后的模块。

加载更改的唯一方法似乎是使用 Import-Module myModule -Force。我的理解是 #Requires 应该处理这个问题。

最佳答案

#Requires -Modules当只提供一个名称时,只检查是否加载了一个模块。如果尚未加载,它将加载它,但正在加载的旧版本仍然可以满足它。

或者,您可以提供一个哈希表,其中包含名称以及最低或准确版本。

通过这样做,您可以加载模块的更新版本,只要您确实用您的更改更新了版本(您应该这样做)。

#Requires -Modules @{ ModuleName = 'myModule' ; RequiredVersion = '1.2.3' }

当然,当您测试某些东西时,这不是很有用,因为您必须不断更改版本,不少于 2 个地方。

当我开发模块时,我通常有一个强制加载模块的调试脚本,并在我进行更改时随时运行它。如果您的测试脚本真的只是为了测试,我建议您使用 Import-Module -Force 而不是 #Requires

关于powershell - 在 Powershell 中,有没有办法确保 #Requires -Modules 始终加载最新的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54190612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com