Функция в .psm1 не экспортируется - PullRequest
1 голос
/ 01 ноября 2019

У меня есть файл myFunc.psm1, подобный этому:

$ApiVersion = "201846465"
Export-ModuleMember -variable ApiVersion

function Get-Something {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory=$true)]
        [string]$Id]
    )
    process {
        # ...
}

Когда я импортирую это в другой файл setup.ps1, я вижу это в исполнении:

VERBOSE: Loading module from path 'D:\myFunc.psm1'.
VERBOSE: Importing variable 'ApiVersion'.
VERBOSE: Hi from setup.ps1

Когда яудалить

$ApiVersion = "201846465"
Export-ModuleMember -variable ApiVersion

Я вижу:

VERBOSE: Exporting function 'Get-Something'.
VERBOSE: Importing function 'Get-Something'.
VERBOSE: Hi from setup.ps1

Почему это происходит и как я могу это исправить?

1 Ответ

1 голос
/ 01 ноября 2019

При отсутствии вызова Export-ModuleMember внутри файла *.psm1 все функции и псевдонимы [1] автоматически экспортируются, но не переменные .

Как только вы используете вызов Export-ModuleMember, автоматический экспорт деактивируется, и вы должны затем явно указать все элементов для экспорта -включая функции и псевдонимы.

Поэтому:

Export-ModuleMember -Variable ApiVersion -Function Get-Something

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


[1] Любопытно, что в dynamic Модули, созданные с New-Module, автоматически экспортируются функции (не псевдонимы).

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