首页/系统/Windows 运维速查/Get-Command 查找命令
PowerShell 基础66 条

Get-Command 查找命令

查找命令是否存在、来自哪个模块、有哪些参数:排查“命令找不到”与命令覆盖问题的第一工具。

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

Get-Command 是什么

Get-Command 用来查找命令是否存在、来自哪个模块、有哪些参数,是排查「命令找不到」与「同名命令行为不一致」的第一工具。PowerShell 里一个名字可能同时对应别名、函数、内置命令与外部程序,执行时按优先级选择其中一个,所以看到的行为常常与预期不同。用它可以一次性列出所有同名项,看清真实的来源;也可以按类型过滤,快速找到某个模块里有哪些可用命令,是探索环境的好帮手。

基本信息

适用平台Windows PowerShell 5.1 与 PowerShell 7 及以上
语法Get-Command [[-Name] <名称或通配符>] [-CommandType <类型>] [-Module <模块>] [-All]
命令类型别名、函数、筛选器、内置命令、外部应用程序、脚本
全量查找加全量参数后同类同名项都会列出,可解释命名冲突
参数查询查看某个命令的完整参数列表与类型
排查用途确认模块是否加载、命令来源路径是否正确

典型使用场景

  • 命令提示找不到时,确认它是否真的存在、来自哪个模块
  • 排查同名冲突:列出全部同名项,看清实际生效的是哪一个
  • 探索模块:按类型过滤列出某类命令,快速了解可用能力
  • 查看参数:查某个命令支持的参数名称与写法
  • 版本差异核对:同一脚本在不同版本上行为不一致时,比对命令来源
  • 脚本自检:启动时校验依赖命令是否存在,缺失就提前报错

常用示例

常用示例
# 按通配符查找内置命令
Get-Command *service* -CommandType Cmdlet
# 列出同名项:解释为什么行为与预期不同
Get-Command ping -All
# 查看命令来自哪个模块
(Get-Command Get-Service).Source
# 查看命令的完整参数
(Get-Command Get-ChildItem).Parameters.Keys
# 判断某个命令是否存在,用于脚本自检
if (Get-Command Get-NetTCPConnection -ErrorAction SilentlyContinue) { '可用' } else { '缺失' }
# 按模块列出全部命令
Get-Command -Module Storage

命令类型与优先级

类型说明查找要点
Alias别名,指向另一个命令别名最容易造成误解,优先用全量参数核对
Function函数,可来自会话或模块会话临时函数会覆盖同名内置命令
Cmdlet内置命令,来自模块来源字段显示所属模块名
Application外部可执行程序需要确认所在路径是否被环境变量覆盖
Script脚本文件确认执行策略与文件路径是否可用
Filter筛选器,行为近似函数较少见,排查时注意类型差异
命令找不到时不要只盯着环境变量里的可执行文件路径:多数情况下是模块没有导入,或模块搜索路径配置不正确,先用它确认命令属于哪个模块,再解决加载问题。
同名命令的优先级由类型决定,别名与函数会覆盖外部程序。脚本里依赖某个外部程序时,写清完整可执行文件名可避免被同名别名截走。

易错点

  • 命令找不到就去改环境变量:多数情况是模块未加载或搜索路径不对,先确认命令属于哪个模块
  • 忽略别名与同名冲突:同一个名字可能被别名覆盖,看到的行为与预期不同,需要用全量参数核对
  • 在脚本里依赖简写命令名:环境不同可能命中不同实现,关键调用应写全名或完整可执行文件名
  • 只看存在性不看参数:命令存在不等于参数受支持,跨版本脚本要核对参数列表
  • 把外部程序当成内置命令:类型不同导致输出与错误处理方式都不一样,判断分支要区分对待

数据来源与参考

  • Microsoft Learn:Get-Command

相关工具

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