Как экспортировать псевдонимы модуля PowerShell с манифестом модуля? - PullRequest
6 голосов
/ 15 апреля 2011

У меня есть модуль с несколькими функциями.

Поскольку я назвал их не-PowerShell-способом, я хочу переименовать их.Но так как модуль уже используется, я хочу сохранить старые имена функций.

Наилучший способ добиться этого - использовать псевдонимы.У меня уже есть манифест модуля, который гласит:

AliasesToExport = '*'

Итак, я создал псевдоним в модуле с New-Alias -Name test -Value oldFunctionName.

Функции были импортированы как обычно, но псевдоним не был там.

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

Итак, вот наконец мои вопросы:

Почему псевдонимы не экспортируются через манифест?

Есть лиособое место в самой функции, где я могу или должен определить псевдоним?Или я должен использовать командлет New-Alias ​​где-то особенным?

Я думал о чем-то вроде псевдонимов параметров:

[parameter(Mandatory=$true, Position=0)][Alias("name","path")][String]$filename

Но вместо функций.

Ответы [ 3 ]

6 голосов
/ 29 апреля 2011

Похоже, решение, которое я ищу, не найдено.

Поэтому мне пришлось использовать Export-ModuleMember

Export-ModuleMember -Function * -Alias *

Сначала я просто использовал параметр "Псевдоним" в качествеФункции были экспортированы правильно благодаря манифесту (FunctionsToExport = "*"), но затем были экспортированы только псевдонимы.

Поэтому убедитесь, что вы экспортируете все, что хотите экспортировать, с помощью командлета Export-ModuleMember.

3 голосов
/ 15 апреля 2011

Добавление -Scope Global к команде New-Alias, похоже, помогает.

New-Alias -Name test -Value oldFunctionName -Scope Global

Пока я пытался это сделать, я заметил кое-что, что меня удивило.У меня есть функция в модуле, целью которой является создание псевдонимов.Я был удивлен, увидев, что когда я использую эту функцию (после того, как модуль был импортирован), псевдонимы, которые он создает, связаны с модулем.Если я удалю модуль, все псевдонимы, созданные с помощью этой функции, тоже исчезнут.

2 голосов
/ 15 апреля 2011

Если вы посмотрите на:

get-help New-ModuleManifest -full

Для -AliasesToExport вы увидите следующее:

-AliasesToExport <string[]>
Specifies the aliases that the module exports. Wildcards are permitted.

You can use this parameter to restrict the aliases that are exported by the module. It can remove aliases from the list of exported aliases, but it cannot add aliases to the list.

If you omit this parameter, New-ModuleManifest creates an AliasesToExport key with a value of * (all), meaning that all aliases that are exported by the module are exported by the manifest.

Я могу ошибаться, но в моем понимании -AliasesToExport может бытьиспользуется для ограничения экспортируемого псевдонима, но предложение «New-ModuleManifest создает ключ AliasesToExport со значением * (все), что означает, что все псевдонимы, экспортируемые модулем, экспортируются манифестом» означаетдля меня, что вы должны экспортировать псевдоним в вашем модуле.

...