重现的步骤:
使用以下函数和别名在\ WindowsPowerShell \ Modules \ TestAlias \ TestAlias.psm1中创建TestAlias模块:
function foo
{ write-output 'foo' }
New-Alias -name bar -value foo
来自PowerShell会话:
import-module TestAlias
bar
术语“bar”无法识别为cmdlet,函数,脚本文件或可运行程序的名称...
答案 0 :(得分:11)
您可以使用
Export-ModuleMember -Function * -Alias *
导出所有函数和别名。
默认情况下,Windows PowerShell模块仅导出命令(函数或cmdletS),而不导出变量或别名。
我将详细介绍为什么会这样。
简短的回答是别名虽然在编写一个内衬时很方便,但却是理解脚本或模块的障碍。它们是一个很好的cmdlet的结块,但暴露的核心是良好的cmdlet。别名使得阅读脚本的用户更难以弄清楚你想要做什么(Set-Content比sc更容易理解)。变量可能更糟糕,因为它们可以很容易地设置为意外值,因为你的模块用户没有什么可以帮助他们知道它们在那里。由于命令很容易被发现(Get-Command -Module FOO)并且更易于探索(使用Get-Help),因此模块将导出的默认命令仅为命令。与PowerShell中的大多数其他内容一样,如果您选择,可以覆盖它,但默认情况下,命令是从模块中导出的唯一内容。
希望这有助于
答案 1 :(得分:9)
使用PSM1文件中的Export-ModuleMember
导出别名
Export-ModuleMember -function foo -Alias bar