约 4188 字

约 21 分钟

#PowerShell 的 Get-Command 命令

Get-Command
    [[-ArgumentList] <Object[]>]
    [-Verb <String[]>]
    [-Noun <String[]>]
    [-Module <String[]>]
    [-ExcludeModule <String[]>]
    [-FullyQualifiedModule <ModuleSpecification[]>]
    [-TotalCount <Int32>]
    [-Syntax]
    [-ShowCommandInfo]
    [-All]
    [-ListImported]
    [-ParameterName <String[]>]
    [-ParameterType <PSTypeName[]>]
    [<CommonParameters>]

Get-Command
    [[-Name] <String[]>]
    [[-ArgumentList] <Object[]>]
    [-Module <String[]>]
    [-ExcludeModule <String[]>]
    [-FullyQualifiedModule <ModuleSpecification[]>]
    [-CommandType <CommandTypes>]
    [-TotalCount <Int32>]
    [-Syntax]
    [-ShowCommandInfo]
    [-All]
    [-ListImported]
    [-ParameterName <String[]>]
    [-ParameterType <PSTypeName[]>]
    [-UseFuzzyMatching]
    [-FuzzyMinimumDistance <UInt32>]
    [-UseAbbreviationExpansion]
    [<CommonParameters>]

功能

获取系统中安装的所有命令,包括 cmdlet、别名、函数、筛选器、脚本和应用程序。

类型

Cmdlet,属于 Microsoft.PowerShell.Core。

参数

  • [-Name] <String[]> - 要获取的命令名称;支持通配符
  • [-ArgumentList] <Object[]> - 指定参数,用于获取命令在特定参数下的信息;别名 Args
  • -Verb <String[]> - 按动词筛选命令;支持通配符
  • -Noun <String[]> - 按名词筛选命令;支持通配符
  • -Module <String[]> - 只获取来自指定模块的命令;支持通配符
  • -ExcludeModule <String[]> - 排除指定模块中的命令
  • -FullyQualifiedModule <ModuleSpecification[]> - 使用完整模块规范获取命令;不能与 -Module 同时使用
  • -CommandType <CommandTypes> - 指定命令类型;别名 Type;可用值:
    • Alias - 别名
    • Function - 函数
    • Filter - 筛选器
    • Cmdlet - cmdlet
    • ExternalScript - PATH 中的 .ps1 脚本
    • Application - PATH 中的可执行文件
    • Script - 脚本块
    • Workflow - 工作流
    • Configuration - 配置
    • All - 所有类型
  • -TotalCount <Int32> - 限制返回的命令数量
  • -Syntax - 只获取命令的语法
  • -ShowCommandInfo - 以 CommandInfo 对象形式显示命令信息
  • -All - 获取所有同名命令,而不只是优先执行的那一个
  • -ListImported - 只获取当前会话中已导入的命令
  • -ParameterName <String[]> - 获取包含指定参数的命令;支持通配符
  • -ParameterType <PSTypeName[]> - 获取包含指定类型参数的命令;支持通配符
  • -UseFuzzyMatching - 使用模糊匹配查找命令
  • -FuzzyMinimumDistance <UInt32> - 设置模糊匹配的最小距离,距离越小越精确
  • -UseAbbreviationExpansion - 使用缩写展开匹配命令

#示例

列出所有命令

> Get-Command
  • 列出本机安装的所有 cmdlet、函数和别名。

查询指定命令

> Get-Command Get-Process
> Get-Command *Process*
  • -Name 可以省略,且支持通配符。
  • 如果命令所在模块尚未加载,PowerShell 会自动导入该模块。

按动词或名词筛选

> Get-Command -Verb Get
> Get-Command -Noun Service
> Get-Command -Verb Get -Noun Item
  • 借助 cmdlet 的 动-宾 命名约定,可以快速定位相关命令。

按模块筛选

> Get-Command -Module Microsoft.PowerShell.Management
> Get-Command *-Item -Module Microsoft.PowerShell.Management
> Get-Command *-*Disk* -ExcludeModule Storage
  • -ExcludeModule 用于排除指定模块。

查看命令语法

> Get-Command Get-ChildItem -Syntax
> Get-Command dir -Syntax
  • 对别名使用 -Syntax 时,会同时显示别名对应的标准命令名。

按命令类型筛选

> Get-Command -Type Application
> Get-Command -Type Alias
> Get-Command -Type Function
  • -Type 是 -CommandType 的别名。

查询别名

> Get-Command dir
CommandType     Name                                               ModuleName
-----------     ----                                               ----------
Alias           dir -> Get-ChildItem

获取所有同名命令

> Get-Command Notepad -All | Format-Table CommandType, Name, Definition
  • 默认只返回优先执行的命令;-All 会返回执行优先级顺序下的所有同名命令。

获取命令所在模块

> (Get-Command Get-Date).ModuleName
Microsoft.PowerShell.Utility

按参数查找命令

> Get-Command -ParameterName *Auth* -ParameterType AuthenticationMechanism
  • 用于查找具有特定名称或类型参数的命令。

使用模糊匹配

> Get-Command get-commnd -UseFuzzyMatching
  • 即使命令名拼写错误,也可以按匹配程度从高到低返回结果。

#推荐阅读

更新: 2026/11/2

作者: planc

创建: 2026/11/2