【发布时间】:2014-03-05 17:39:58
【问题描述】:
我正在构建一个模块,用于导出我想通过我的个人资料提供的 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 模块的预期并被认为是正常的方面吗?
【问题讨论】:
标签: function powershell powershell-module