首页/系统/Windows 运维速查/别名 Get-Alias / Set-Alias
PowerShell 基础66 条

别名 Get-Alias / Set-Alias

命令的短名称(dir/curl/wget 等):查看别名指向、区分“命令行为不同”的原因与自定义别名的方法。

Windows 运维速查系统更新于 2026-10-13

别名是什么

别名是命令的短名称,PowerShell 启动时预置了一批:dir 指向 Get-ChildItem、cd 指向 Set-Location、curl 指向 Invoke-WebRequest。别名在命令解析时优先于同名可执行文件,所以“同一个命令行为不一样”多半是别名在起作用。它也解释了一批经典困惑,比如在 PowerShell 里敲 curl 得到的是 PowerShell 的网页请求 cmdlet,参数与 curl.exe 完全不同。

基本信息

适用平台PowerShell 5.1 / 7.x;各版本预置别名集合略有差异
查看语法Get-Alias -Name 别名;Get-Alias -Definition 命令
定义语法Set-Alias -Name 名称 -Value 命令
删除语法Remove-Item Alias:名称
生效范围默认只在当前会话;写进 Profile 才对每次启动生效
解析优先级别名 > 函数 > cmdlet > 外部可执行文件

典型使用场景

  • 查清某个短命令实际执行的是什么,解释行为差异
  • 查一个命令有哪些别名,快速反推可用简写
  • 为常用命令定义会话级简写,提高交互效率
  • 排查脚本里依赖的别名在升级后是否还存在
  • 确认 curl、wget、ls 这类跨平台同名命令的归属

常用示例

常用示例
Get-Alias curl                            # 看 curl 在 PowerShell 里指向谁
Get-Alias dir                             # dir 实为 Get-ChildItem 的别名
Get-Alias -Definition Invoke-WebRequest   # 反查某命令有哪些别名
Set-Alias -Name ll -Value Get-ChildItem   # 定义会话级别名
Remove-Item Alias:ll                      # 删除别名
curl.exe --version                        # 要真 curl 就写全名
Get-Command curl -All | Format-List CommandType, Name, Source   # 看清解析全貌

常见别名对照

别名实际命令需要留意的差异
dirGet-ChildItem输出是对象不是文本
cdSet-Location支持 PSDrive 路径
curlInvoke-WebRequest参数与原版完全不同
wgetInvoke-WebRequest同上
lsGet-ChildItem在 Linux 上则是外部命令
whereWhere-Object要查文件位置请写 where.exe
脚本里不要依赖别名:不同 PowerShell 版本预置集合有差异,跨版本或跨平台执行时别名可能不存在,写全命令名最稳。
想弄清一条命令到底会被谁执行,用 Get-Command <名称> -All 一次列全,比反复猜别名更高效;它还会标出别名、函数与可执行文件的优先级顺序。
别名的作用域是会话:交互窗口里定义的简写在计划任务、CI 流水线这类全新会话里不存在,所以正式脚本里请统一使用完整命令名,别名只留给自己敲着省事。

易错点

  • 在脚本里写 curl 或 wget,结果调用的是 PowerShell 的 cmdlet,参数报错却看不出原因
  • Set-Alias 定义后以为永久生效,重开窗口就没了,需要写进 Profile 才行
  • 用别名在跨平台脚本里提高“可读性”,到了 Linux/macOS 或旧版本上直接命令未找到
  • 自建别名与外部工具同名(如覆盖 git),交互时顺手,自动化时踩坑

数据来源与参考

  • Microsoft Learn:about_Aliases
  • Microsoft Learn:Get-Alias

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌