PowerShell函数中无法添加别名?问题求助
问题原因与解决方案
在函数内使用New-Alias创建的别名,默认会被限定在函数的本地作用域中。当函数执行完毕后,这个本地作用域会被回收,别名也就随之消失,自然无法在全局PowerShell会话中使用。
而直接在配置脚本(如$PROFILE)里写New-Alias时,脚本默认运行在全局作用域,所以别名会直接注册到全局,能一直生效。
解决方法:指定全局作用域
给每个New-Alias命令加上-Scope Global参数,强制将别名注册到全局作用域:
function Populate-Aliases() { New-Alias -Name grep -Value Select-String -Scope Global New-Alias -Name touch -Value New-Item -Scope Global New-Alias -Name lsa -Value dir -Force -Scope Global } Populate-Aliases
也可以用Set-Alias替代New-Alias(两者功能重叠,Set-Alias支持创建或修改别名),效果完全一致:
function Populate-Aliases() { Set-Alias -Name grep -Value Select-String -Scope Global Set-Alias -Name touch -Value New-Item -Scope Global Set-Alias -Name lsa -Value dir -Force -Scope Global } Populate-Aliases
修改后重新加载配置脚本(或重启PowerShell),调用Populate-Aliases后,别名就能在当前会话中正常使用了。
内容的提问来源于stack exchange,提问作者Laszlo Stark
相关产品推荐
相关产品推荐

