У меня есть модуль PowerShell в powowshell.psm1
, который я хочу установить и сразу же доступен как псевдоним pow
.My install.ps1
копирует файл в правильную папку, делает Import-Module -name PowowShell -Global -Alias pow
, а затем проверяет, существует ли команда с помощью псевдонима с Get-Command "pow"
, который возвращает команду.
Проблема в том, как только install.ps1
завершает работу модуля доступно только через полное имя Invoke-PowowShell
, а не через увы pow
.
Если я потом запишу точно такой же код Import-Module
, с или без -Alias
У меня вдругpow
.
Почему мой модуль не сразу доступен как pow
, а только как Invoke-PowowShell
.
Перезапуск PowerShell не помогает.
powowshell.psm1
function Invoke-PowowShell {
[CmdletBinding(SupportsShouldProcess)]
[Alias('pow')]
#...code here...
"You have the POWer!"
}
Export-ModuleMember -Function Invoke-PowowShell -Alias pow
install.ps1 :
# Copy .psm1 to correct modules folder /PowowShell/PowowShell.psm1
# ...
# Install module globally
Write-Verbose "Import-Module -name PowowShell -Global -Alias pow"
Import-Module -name PowowShell -Global -Alias pow
# Check we have the "pow" alias available
write-verbose 'Get-Command "pow"'
$PowowShell = Get-Command "pow"
write-verbose "`$PowowShell=$PowowShell"
ВЫХОД:
Installing PowowShell module to C:\Users\me\Documents\PowerShell\Modules ...
VERBOSE: Import-module -name PowowShell -Global
VERBOSE: Loading module from path
'C:\Users\me\Documents\PowerShell\Modules\PowowShell\PowowShell.psm1'.
VERBOSE: Exporting function 'Invoke-PowowShell'.
VERBOSE: Exporting alias 'pow'.
VERBOSE: Importing alias 'pow'.
VERBOSE: Get-Command "pow"
VERBOSE: $PowowShell=pow
Yep, the 'pow' is CmdLet installed
Type 'pow help' for a list of commands
PS W:\powershell\powowshell> pow help
pow : The term 'pow' is not recognized as the name of a cmdlet, function, script file, or operable program.
PS W:\powershell\powowshell> Get-Command Invoke-PowowShell
CommandType Name Version Source
----------- ---- ------- ------
Function Invoke-PowowShell 0.0 PowowShell
Так что ничего не работает и тогда я вручную Import-Module
...
PS W:\powershell\powowshell> Import-Module -name PowowShell -Global
PS W:\powershell\powowshell> pow
"You have the POWer!"
Теперь это работает!