2017-01-30 3 views
0

Таким образом, заголовок делает это в значительной степени ясным, но я попробую более точно все равно. Итак, вопрос в том, можно ли экспортировать вспомогательные функции из модуля и сделать их доступными только для повторного использования в коде, но ограниченные пользователем, чтобы он не мог их вызвать из консоли?Скрыть экспортированные функции PowerShell от пользователя

Спасибо заранее!

+0

Когда вы говорите, что доступно для повторного использования в коде, вы имеете в виду код в модуле, скрипт, внешний для модуля, отдельный модуль? –

+0

Мне нужно использовать определенные функции в отдельных модулях, не делая эти функции доступными для пользовательской консоли. – SokIsKedu

ответ

0

Конечно, вам нужно просто указать, что вы экспортируете как так (в PSM файле):

Export-ModuleMember -Function Verb-Noun 

Это будет экспортировать только эту одну функцию и в вашем Фотошоп файл:

FunctionsToExport = 'Verb-Noun' 
+0

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

+0

извините, я не понимаю, что вы говорите, можете ли вы перефразировать? Для меня это работает так, как ожидалось: 'Get-Command -Module mymodule' возвращает только 1 команду. Добавить примеры? @SokIsKedu – 4c74356b41

+0

Прочтите комментарий к самому вопросу, ему нужны методы, доступные для других модулей, но недоступные для пользователя. –

0

Я не думаю, что это возможно, как вы хотите это сделать. Как бы я справился с этим, у меня есть файл PS1 в вспомогательном модуле, который содержит все скрытые команды, но не загружает его как часть вспомогательного модуля. Затем в модулях, которые зависят от него, просто укажите источник источника PS1, и он будет импортировать все сценарии для его использования.

Например, в модуле требующем вспомогательный модуль:

. $PSScriptRoot\..\HelperModule\HelperModuleInternal.ps1 

Очевидно заменить HelperModule и HelperModuleInternal с именем хелперов модуля и скрытых команд ps1 файла соответственно. Обратите внимание, что если вы сделаете файл psm1, это просто откроет ISE.

Я не уверен, но он все равно может попытаться экспортировать скрытые команды, если это так, я прочитал аккуратный трюк, связанный с этим. Вызовите все опубликованные команды обычным синтаксисом Verb-Noun, а в конце введите Export-ModuleMember -Function "*-*". Затем для ваших внутренних команд используйте именование, которое не соответствует этому, например Verb_Noun или VerbNoun. Очень аккуратно.