我正在构建一个模块,用于导出我想通过我的配置文件提供的 cmdlet。此 cmdlet 的实现分布在多个实现文件中,这些文件包含我不想公开的实现功能。所以我使用Export-ModuleMember来隐藏它们。
文件get_something.psm1
import-module .\get_something_impl.psm1
function Get-Something {
[cmdletbinding()]
Get-SomethingImplementation
}
Export-ModuleMember -Function Get-Something
然后我将get_something.psm1添加到我的个人资料中。通过仅导出Get-Something,我的所有实现功能都保持“私有”。
我遇到的问题是,在使用Export-ModuleMember命令时,每次我需要其中的一个函数时,我都必须在我的实现文件中导入一个模块。例如,假设我有一个模块 person.psm1 和一个函数Get-Person,我需要在我的所有实现文件中调用它。现在我必须在需要调用Get-Person的每个文件中导入person.psm1。这是使用Export-ModuleMember-Function Get-Something的结果。没有它,我只需要导入person.psm1一次,它就可以使用了。
从本质上讲,Export-ModuleMember不仅阻止了我对外部的实现。它阻止了我自己的实现。
这是预期的并被认为是设计 PowerShell 模块的正常方面吗?