Подтвердить что ты не робот

Как скрыть функции "Помощник" в модулях Powershell

У меня есть модуль xy, который имеет несколько функций для конечного пользователя и несколько внутренних вспомогательных функций, вызываемых функциями, но не конечным пользователем.

Get-Command -Module xy -CommandType function

перечисляет все функции, которые у меня есть в папке моего модуля (например, get-foo и get-foo_helper)

Есть ли способ скрыть функцию get-foo_helper от конечного пользователя, который использует:

Get-Command -Module tcaps -CommandType function
4b9b3361

Ответ 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

Во многих случаях объявленная функция может быть заменена скриптблоком (то есть анонимной функцией).