Как скрыть функции "Помощник" в модулях Powershell
У меня есть модуль xy, который имеет несколько функций для конечного пользователя и несколько внутренних вспомогательных функций, вызываемых функциями, но не конечным пользователем.
Get-Command -Module xy -CommandType function
перечисляет все функции, которые у меня есть в папке моего модуля (например, get-foo
и get-foo_helper
)
Есть ли способ скрыть функцию get-foo_helper
от конечного пользователя, который использует:
Get-Command -Module tcaps -CommandType function
Ответы
Ответ 1
Одна вещь, которую я сделал, это использование соглашения об именах глагола-существительного для функций, которые я хочу экспортировать, но оставьте дефис в вспомогательных функциях.
Затем export-modulemember *-*
берет только экспорт того, что вы хотите экспортировать.
Ответ 2
Просто добавьте Export-ModuleMember в нижнюю часть вашего модуля.
Скажем, у вас есть следующие функции в вашем модуле:
New-Function0
New-Function1
New-Function2
New-HelperFunction0
Добавьте эти строки в конец файла модуля:
Export-ModuleMember -function New-Function0
Export-ModuleMember -function New-Function1
Export-ModuleMember -function New-Function2
Когда вы запускаете Import-Module в этом модуле, он будет импортировать только функции, определенные Export-ModuleMember.
Теперь скажем, вы также хотели экспортировать псевдоним для New-Function1. просто добавьте это в конец своего модуля:
Export-ModuleMember -alias nf1
Теперь, когда вы используете Import-Module, он загрузит функции, которые вы определили, а также псевдоним (nf1) для New-Function1.
Ответ 3
Вы можете использовать Export-ModuleMember или создать манифест модуля и указать экспортированные команды. Вы можете использовать New-ModuleManifest для создания файла манифеста.
Ответ 4
Во многих случаях объявленная функция может быть заменена скриптблоком (то есть анонимной функцией).