Я создаю модуль, который экспортирует командлет, который я хотел бы сделать доступным через свой профиль. Реализация этого командлета распределена по нескольким файлам реализации, которые содержат функции реализации, которые я не хочу делать общедоступными. Поэтому я использую 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, которую мне нужно вызывать во всех моих файлах реализации. Теперь я должен импортировать person.psm1 в каждый отдельный файл, который мне нужно вызвать Get-Person. Это результат использования Export-ModuleMember-Function Get-Something. Без него мне нужно было бы импортировать person.psm1 только один раз, и он был бы доступен.
По сути, Export-ModuleMember не только блокирует мою реализацию снаружи. Это блокирует его от моей собственной реализации.
Ожидается ли это и считается ли это нормальным аспектом разработки модулей PowerShell?