如何确保在我的自定义脚本模块中加载了3rd方模块?

我有一个自定义脚本模块,其中一个功能取决于 AWSPowerShell 模块。我试图放入Import-Module AWSPowerShell该函数,但是当它在服务器上运行时它失败并说没有找到有效的模块。如果我Import-Module AWSPowerShell从以同一用户身份运行的同一台服务器上的命令行尝试,它工作正常。Import-Module从另一个模块内部调用似乎有问题。

我看到 NestedModules 可用于指定依赖项,因此我将其添加NestedModules @('AWSPowerShell')到模块清单中并Import-Module AWSPowerShell从需要它的函数中删除了。

现在,有关 AWSPowerShell 的错误发生在我从调用脚本导入我自己的自定义模块时。

确切的错误是: Import-Module : The module to process 'AWSPowerShell', listed in field 'NestedModules' of module manifest 'C:Program FilesWindowsPowerShellModules...MyModule.psd1' was not processed because no valid module was found in any module directory.

我确实注意到 AWSPowerShell 模块安装在与我的自定义模块不同的文件夹路径中。我的模块C:Program FilesWindowsPowerShellModulesC:Program Files (x86)AWS ToolsPowerShell.

如何设置它以便可以加载 AWSPowerShell 以在我的模块中使用?

更新
我在下面复制了 AWSPowerShell 模块文件夹C:Program FilesWindowsPowerShellModules,现在模块使用 NestedModules 方法成功导入。我所看到的关于 NestedModules 的一切似乎都是为了组合正在为更大解决方案而开发的模块。我不确定使用这种技术来导入这样的 3rd 方模块。我可能会滥用此功能。

回答

  • NestedModule模块清单(.psd1)项是对于那些模块捆绑的模块,并在只有你的模块的代码可用。

  • RequiredModules用于导入独立预安装的模块,当您的模块被导入时,这些模块会被导入到全局范围内,这意味着调用者也可以使用它们的命令。

注意:此答案显示了如何通过将RequiredModules模块声明为external dependencies来指定要按需安装的模块,但限制似乎是模块及其依赖项必须来自同一个存储库并且必须使用.Install-Module


以上是如何确保在我的自定义脚本模块中加载了3rd方模块?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>