Соглашения и встроенная поддержка для определения частных функций внутри модуля - PullRequest
0 голосов
/ 01 марта 2020

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

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

function _Get-Something {...}
function Get-SomethingElse { _Get-Something -arg sdfsdf .....}

Export-ModuleMember -Function Get-SomethingElse

1 Ответ

1 голос
/ 02 марта 2020

Используя ваш пример, я не получаю предупреждающее сообщение (PowerShell 5.1), потому что вы не экспортируете функцию _Get-Something.

Если я ее экспортирую (Export-ModuleMember -Function Get-SomethingElse, _Get-Something), то появляется предупреждение .

Я не знаю никаких соглашений для этого, но я обычно называю такую ​​вспомогательную функцию в модуле без a da sh (_Get-Something - > _GetSomething) и использовать правильные имена с утвержденными глаголами для функций, которые я хочу экспортировать. Затем экспортируйте ленивый путь:

Export-ModuleMember -Function *-*

Также возможно «спрятать» вспомогательные функции внутри экспортируемой функции, которая ее использует, например

function Get-SomethingElse { 
    # helper function inside
    function _Get-Something { Write-Host "Hi from $($MyInvocation.MyCommand)" }

    _Get-Something -arg 'sdfsdf .....'
}

Export-ModuleMember -Function Get-SomethingElse

This на моем компьютере также не отображается предупреждение.

Наконец, вы можете избавиться от предупреждения, добавив ключ -DisableNameChecking в команду:

Import-Module 'D:\test.psm1' -DisableNameChecking

Надеюсь, это поможет

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