Шаги для репродуцирования:
Создайте модуль TestAlias в \WindowsPowerShell\Modules\TestAlias\TestAlias.psm1 со следующей функцией и псевдонимом:
function foo
{ write-output 'foo' }
New-Alias -name bar -value foo
От сессии PowerShell:
import-module TestAlias
bar
Термин 'панель' не распознан как название cmdlet, функции, файла сценария или действующей программы...
Использовать Export-ModuleMember
в файле PSM1 для экспорта Alias
Export-ModuleMember -function foo -Alias bar
Для экспорта всех функций и псевдонимов можно использовать
Export-ModuleMember -Function * -Alias *
.
По умолчанию модули Windows PowerShell экспортируют только команды (функции или командыS), а не переменные или псевдонимы.
Я расскажу немного подробнее о том, почему это так.
Короткий ответ заключается в том, что псевдонимы, хотя и удобны при написании одного лайнера, но являются препятствием для понимания скрипта или модуля. Они обледенелы на пироге хорошей команды, но суть их заключается в хорошей команде. Псевдонимы усложняют пользователю чтение вашего сценария (Set-Content гораздо проще понять, чем sc). Переменные могут быть еще хуже, так как их можно легко установить на неожиданные значения, а также потому, что их очень мало, чтобы помочь пользователю понять, что они есть в вашем модуле. Поскольку команды легко обнаруживаются (Get-Command -Module FOO) и проще исследовать (с помощью Get-Help), по умолчанию модуль будет экспортировать только команды. Как и большинство других вещей в PowerShell, вы можете переопределить его по своему усмотрению, но по умолчанию команды - это единственное, что экспортируется из модуля.
Надеюсь, это поможет
.