我正在構建一個模塊,用於導出我想通過我的配置文件提供的cmdlet。此cmdlet的實現分佈在多個實現文件中,這些實現文件包含我不想公開的實現函數。所以我使用Export-ModuleMember來隱藏它們。Powershell模塊設計 - 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命令時,我必須在我的實現文件中導入一個模塊,每次我需要一個函數在裏面。例如,假設我有一個帶有函數Get-Person的person.psm模塊,我需要在所有實現文件中調用它。現在我必須在每個需要調用Get-Person的文件中導入person.psm1。這是使用Export-ModuleMember -Function Get-Something的結果。沒有它,我只需要導入person.psm1一次,它就可以使用。
實際上,Export-ModuleMember不僅阻止了我的實現,還阻止了我的實現。
這是預期的並且被認爲是設計Powershell模塊的一個正常方面嗎?