Как скрыть «вспомогательные» функции в модулях Powershell - PullRequest
37 голосов
/ 17 мая 2011

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

Get-Command -Module xy -CommandType function

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

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

Get-Command -Module tcaps -CommandType function

Ответы [ 4 ]

40 голосов
/ 17 мая 2011

Одна вещь, которую я сделал, - это использование соглашения об именовании глагола для функций, которые я хочу экспортировать, но опускаю дефис в вспомогательных функциях.

Тогда export-modulemember *-* заботится только об экспорте того, что вы хотите экспортировать.

35 голосов
/ 18 мая 2011

Просто добавьте 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.

4 голосов
/ 17 мая 2011

Вы можете использовать Export-ModuleMember или создать Манифест модуля и указать экспортируемые команды. Вы можете использовать New-ModuleManifest для создания файла манифеста.

3 голосов
/ 17 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...