#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- cmdletExternalScript- 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-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
- 即使命令名拼写错误,也可以按匹配程度从高到低返回结果。