Не удалось создать псевдоним PowerShell в модуле сценария

Шаги для репродуцирования:

Создайте модуль TestAlias в \WindowsPowerShell\Modules\TestAlias\TestAlias.psm1 со следующей функцией и псевдонимом:

function foo
{ write-output 'foo' }


New-Alias -name bar -value foo

От сессии PowerShell:

import-module TestAlias
bar

Термин 'панель' не распознан как название cmdlet, функции, файла сценария или действующей программы...

11
задан Peter Mortensen 23 June 2017 в 23:15
поделиться

2 ответа

Использовать Export-ModuleMember в файле PSM1 для экспорта Alias

Export-ModuleMember -function foo -Alias bar
9
ответ дан 3 December 2019 в 05:58
поделиться

Для экспорта всех функций и псевдонимов можно использовать

Export-ModuleMember -Function * -Alias * 

.

По умолчанию модули Windows PowerShell экспортируют только команды (функции или командыS), а не переменные или псевдонимы.

Я расскажу немного подробнее о том, почему это так.

Короткий ответ заключается в том, что псевдонимы, хотя и удобны при написании одного лайнера, но являются препятствием для понимания скрипта или модуля. Они обледенелы на пироге хорошей команды, но суть их заключается в хорошей команде. Псевдонимы усложняют пользователю чтение вашего сценария (Set-Content гораздо проще понять, чем sc). Переменные могут быть еще хуже, так как их можно легко установить на неожиданные значения, а также потому, что их очень мало, чтобы помочь пользователю понять, что они есть в вашем модуле. Поскольку команды легко обнаруживаются (Get-Command -Module FOO) и проще исследовать (с помощью Get-Help), по умолчанию модуль будет экспортировать только команды. Как и большинство других вещей в PowerShell, вы можете переопределить его по своему усмотрению, но по умолчанию команды - это единственное, что экспортируется из модуля.

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

.
11
ответ дан 3 December 2019 в 05:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: