PowerShell使用Set-Alias为带参数命令创建别名失败问题
解决PowerShell中为带参数命令创建"别名"的问题
问题原因
Set-Alias 仅支持为单个命令/可执行文件创建别名,无法直接包含参数或通配符。当你尝试将 ls * 设为别名值时,PowerShell会把整个字符串 ls * 当作一个独立的命令名去查找,自然会抛出"未找到命令"的错误。
正确解决方案:使用PowerShell函数
要实现带参数的命令快捷执行,应该创建自定义函数而非别名,示例如下:
临时生效(当前会话)
在PowerShell中直接执行以下命令:
function tt { ls * }
执行后输入 tt,就会等价于运行 ls *。
永久生效(所有会话)
如果希望每次启动PowerShell都能使用这个快捷命令,需要将函数添加到PowerShell配置文件中:
- 查看配置文件路径:
$PROFILE
- 打开并编辑该文件(如果文件不存在,先运行
New-Item -Path $PROFILE -ItemType File -Force创建),将上述函数代码添加进去。 - 保存后重启PowerShell,
tt即可永久使用。
更规范的写法
由于 ls 是 Get-ChildItem 的内置别名,也可以写成更标准的形式:
function tt { Get-ChildItem * }
内容的提问来源于stack exchange,提问作者Arthur Snyder
相关产品推荐
相关产品推荐

