Get-Command

获取所有命令。

语法

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

说明

cmdlet Get-Command 获取计算机上安装的所有命令,包括 cmdlet、别名、函数、筛选器、脚本和应用程序。 Get-Command 从 PowerShell 模块获取命令,以及从其他会话导入的命令。 若要仅获取已导入到当前会话中的命令,请使用 ListImported 参数。

如果没有参数, Get-Command 则获取计算机上安装的所有 cmdlet、函数和别名。 Get-Command * 获取所有类型的命令,包括 Path 环境变量 ($env:Path) 中的所有非 PowerShell 文件,该文件在 Application 命令类型中列出。

Get-Command 使用命令的确切名称(不带通配符)会自动导入包含命令的模块,以便可以立即使用该命令。 若要启用、禁用和配置模块的自动导入,请使用 $PSModuleAutoLoadingPreference 首选项变量。 有关详细信息,请参阅 about_Preference_Variables

Get-Command 直接从命令代码获取数据,不像 Get-Help,后者从帮助主题获取其信息。

从 Windows PowerShell 5.0 开始,cmdlet 的结果Get-Command默认显示“版本”列。 新的 Version 属性已添加到 CommandInfo 类。

示例

示例 1:获取 cmdlet、函数和别名

此命令获取计算机上安装的 PowerShell cmdlet、函数和别名。

Get-Command

示例 2:获取当前会话中的命令

此命令使用 ListImported 参数来仅获取当前会话中的命令。

Get-Command -ListImported

示例 3:获取 cmdlet 并按顺序显示它们

此命令将获取所有的 cmdlet、通过 cmdlet 名称中的名词按字母顺序对其进行排序,然后将其显示在基于名词的组中。 此显示内容可帮助你在任务中查找 cmdlet。

Get-Command -Type Cmdlet | Sort-Object -Property Noun | Format-Table -GroupBy Noun

示例 4:获取模块中的命令

此命令使用 Module 参数获取 Microsoft.PowerShell.Security 和 Microsoft.PowerShell.Utility 模块中的命令。

Get-Command -Module Microsoft.PowerShell.Security, Microsoft.PowerShell.Utility

示例 5:获取有关 cmdlet 的信息

此命令获取有关 Get-AppLockerPolicy cmdlet 的信息。 它还会导入 AppLocker 模块,该模块可将 AppLocker 模块中的所有命令添加到当前会话中。

Get-Command Get-AppLockerPolicy

自动导入模块时,效果与使用 Import-Module cmdlet 的效果相同。 该模块可以添加命令、类型和格式设置文件,并在会话中运行脚本。 若要启用、禁用和配置模块的自动导入,请使用 $PSModuleAutoLoadingPreference 首选项变量。 有关详细信息,请参阅 about_Preference_Variables

示例 6:获取 cmdlet 的语法

此命令使用 ArgumentList语法 参数来获取 cmdlet 在 Cert: 驱动器中使用 cmdlet 的语法 Get-ChildItem 。 Cert: 驱动器是证书提供程序添加到会话中的 PowerShell 驱动器。

Get-Command Get-Childitem -Args Cert: -Syntax

将输出中显示的语法与省略 Args (ArgumentList) 参数时显示的语法进行比较时,会看到 证书提供程序 将动态参数 CodeSigningCert 添加到 cmdlet Get-ChildItem

有关证书提供程序的详细信息,请参阅 about_Certificate_Provider

示例 7:获取动态参数

示例中的 命令使用 Get-DynamicParameters 函数获取证书提供程序在 Cert: 驱动器中使用 Cmdlet 时添加到 Get-ChildItem cmdlet 的动态参数。

function Get-DynamicParameters
{
    param ($Cmdlet, $PSDrive)
    (Get-Command $Cmdlet -ArgumentList $PSDrive).ParameterSets | ForEach-Object {$_.Parameters} | Where-Object { $_.IsDynamic } | Select-Object -Property Name -Unique
}
Get-DynamicParameters -Cmdlet Get-ChildItem -PSDrive Cert:

Name
----
CodeSigningCert

Get-DynamicParameters此示例中的 函数获取 cmdlet 的动态参数。 这是上一示例中所用方法的替代方法。 可以通过另一个 cmdlet 或提供程序将 Dynamic 参数添加到 cmdlet。

示例 8:获取所有类型的所有命令

此命令获取本地计算机上所有类型的所有命令,包括 path 环境变量路径中的可执行文件 ($env:path) 。

Get-Command *

它将为每个文件返回一个 ApplicationInfo 对象 (System.Management.Automation.ApplicationInfo),而不是 FileInfo 对象 (System.IO.FileInfo)。

示例 9:使用参数名称和类型获取 cmdlet

此命令获取具有名称包含 Auth 且类型为 AuthenticationMechanism 的参数的 cmdlet。

Get-Command -ParameterName *Auth* -ParameterType AuthenticationMechanism

可以使用类似此命令的命令查找允许你指定用于对用户进行身份验证的方法的 cmdlet。

即使采用 AuthenticationMechanism 值的参数和采用 AuthenticationLevel 参数的参数具有类似名称,ParameterType 参数也可区分它们。

示例 10:获取别名

此示例演示如何将 Get-Command cmdlet 与别名一起使用。

Get-Command dir

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

尽管它通常用于 cmdlet 和函数, Get-Command 但也获取脚本、函数、别名和可执行文件。

命令的输出将显示别名的 Name 属性值的特殊视图。 该视图将显示别名以及完整的命令名称。

示例 11:获取记事本命令的所有实例

此示例使用 cmdlet 的 Get-CommandAll 参数显示本地计算机上的“记事本”命令的所有实例。

Get-Command Notepad -All | Format-Table CommandType, Name, Definition

CommandType     Name           Definition
-----------     ----           ----------
Application     notepad.exe    C:\WINDOWS\system32\notepad.exe
Application     NOTEPAD.EXE    C:\WINDOWS\NOTEPAD.EXE

当会话中的多个命令具有相同名称时,All 参数非常有用。

从 Windows PowerShell 3.0 开始,默认情况下,当会话包含多个具有相同名称的命令时,Get-Command仅获取键入命令名称时运行的命令。 使用 All 参数获取 Get-Command 具有指定名称的所有命令,并按执行优先级顺序返回这些命令。 若要运行除列表中第一个命令以外的某个命令,请键入该命令的完全限定的路径。

有关命令优先级的详细信息,请参阅 about_Command_Precedence

示例 12:获取包含 cmdlet 的模块的名称

此命令获取 cmdlet 源自的 Get-Date 模块的名称。 该命令使用所有命令的 ModuleName 属性。

(Get-Command Get-Date).ModuleName

Microsoft.PowerShell.Utility

此命令格式适用于 PowerShell 模块中的命令,即使它们未导入到会话中。

示例 13:获取具有输出类型的 cmdlet 和函数

Get-Command -Type Cmdlet | Where-Object OutputType | Format-List -Property Name, OutputType

此命令将获取具有输出类型及其返回的对象类型的 cmdlet 和函数。

该命令的第一部分将获取所有 cmdlet。 管道运算符 (|) 将 cmdlet 发送到 Where-Object cmdlet,该 cmdlet 仅选择在其中填充 OutputType 属性的 cmdlet 。 另一个管道运算符将所选 cmdlet 对象发送到 Format-List cmdlet,该 cmdlet 在列表中显示每个 cmdlet 的名称和输出类型。

仅当 cmdlet 代码为 cmdlet 定义了 OutputType 属性时,CommandInfo 对象的 OutputType 属性的值才为非 null。

示例 14:获取采用特定对象类型作为输入的 cmdlet

Get-Command -ParameterType (((Get-NetAdapter)[0]).PSTypeNames)

CommandType     Name                                               ModuleName
-----------     ----                                               ----------
Function        Disable-NetAdapter                                 NetAdapter
Function        Enable-NetAdapter                                  NetAdapter
Function        Rename-NetAdapter                                  NetAdapter
Function        Restart-NetAdapter                                 NetAdapter
Function        Set-NetAdapter                                     NetAdapter

此命令可查找将网络适配器对象用作输入的 cmdlet。 可以使用此命令格式查找接受任何命令返回的对象类型的 cmdlet。

该命令使用所有对象的 PSTypeNames 内部属性,它将获取用于描述该对象的类型。 若要获取网络适配器的 PSTypeNames 属性,而不是网络适配器集合的 PSTypeNames 属性,该命令将使用数组表示法来获取该 cmdlet 返回的第一个网络适配器。

示例 15:使用模糊匹配获取命令

在此示例中,命令的名称特意将拼写错误设置为“get-commnd”。 -UseFuzzyMatching使用 开关,cmdlet 确定最佳匹配Get-Command项后跟系统上的其他本机命令是类似的匹配项。

Get-Command get-commnd -UseFuzzyMatching

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Cmdlet          Get-Command                                        6.2.0.0    Microsoft.PowerShell.Core
Application     getconf                                            0.0.0.0    /usr/bin/getconf
Application     command                                            0.0.0.0    /usr/bin/command

参数

-All

指示此 cmdlet 获取所有命令,包括具有相同名称的相同类型的命令。 默认情况下, Get-Command 仅获取键入命令名称时运行的命令。

有关 PowerShell 用于选择要在多个命令具有相同名称时运行的命令的方法的详细信息,请参阅 about_Command_Precedence。 有关模块限定的命令名称和由于名称冲突而默认不运行的正在运行的命令的信息,请参阅 about_Modules

已在 Windows PowerShell 3.0 中引入了此参数。

在 Windows PowerShell 2.0 中, Get-Command 默认获取所有命令。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ArgumentList

指定参数数组。 此 cmdlet 获取有关 cmdlet 或函数的信息,当它与指定的参数一起使用时, (“arguments”) 。 ArgumentList 的别名是 Args

若要检测仅在使用某些其他参数时才可用的动态参数,请将 ArgumentList 的值设置为触发动态参数的参数。

若要检测提供程序添加到 cmdlet 的动态参数,请将 ArgumentList 参数的值设置为提供程序驱动器中的路径,例如 WSMan:、HKLM:或 Cert:。 当命令是 PowerShell 提供程序 cmdlet 时,在每个命令中只输入一个路径。 提供程序 cmdlet 仅返回 ArgumentList 值的第一个路径的动态参数。 有关提供程序 cmdlet 的信息,请参阅 about_Providers

Type:Object[]
Aliases:Args
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CommandType

指定此 cmdlet 获取的命令类型。 输入一个或多个命令类型。 使用 CommandType 或其别名 Type。 默认情况下, Get-Command 获取所有 cmdlet、函数和别名。

此参数的可接受值为:

  • 别名。 获取所有 PowerShell 命令的别名。 有关详细信息,请参阅 about_Aliases
  • 全部。 获取所有命令类型。 此参数值等效 Get-Command *于 。
  • 应用程序。 获取 Path 环境变量 ($env: path) 中列出的路径中的非 PowerShell 文件,包括 .txt、.exe 和 .dll 文件。 有关 Path 环境变量的详细信息,请参阅 about_Environment_Variables。
  • Cmdlet。 获取所有 cmdlet。
  • ExternalScript。 获取在 Path 环境变量 ($env:path) 中列出的路径中的所有 .ps1 文件。
  • 筛选器和函数。 获取所有 PowerShell 高级和简单函数和筛选器。
  • 脚本。 获取所有脚本块。 若要将 PowerShell 脚本 (.ps1 文件) ,请使用 ExternalScript 值。
Type:CommandTypes
Aliases:Type
Accepted values:Alias, Function, Filter, Cmdlet, ExternalScript, Application, Script, Workflow, Configuration, All
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-FullyQualifiedModule

指定名称以 ModuleSpecification 对象的形式指定的模块,ModuleSpecification构造函数 (Hashtable) 中所述。 例如, FullyQualifiedModule 参数接受以下列格式之一指定的模块名称:

  • @{ModuleName = "modulename"; ModuleVersion = "version_number"}
  • @{ModuleName = "modulename"; ModuleVersion = "version_number"; Guid = "GUID"}

ModuleNameModuleVersion 是必需的,但 Guid 是可选的。

不能在与 Module 参数相同的命令中指定 FullyQualifiedModule 参数。 这两个参数互斥。

Type:ModuleSpecification[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ListImported

指示此 cmdlet 仅获取当前会话中的命令。

从 PowerShell 3.0 开始,默认情况下, Get-Command 获取所有已安装的命令,包括但不限于当前会话中的命令。 在 PowerShell 2.0 中,它仅获取当前会话中的命令。

已在 Windows PowerShell 3.0 中引入了此参数。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Module

指定模块数组。 此 cmdlet 获取来自指定模块的命令。 输入模块或模块对象的名称。

此参数采用字符串值,但此参数的值也可以是 PSModuleInfo 对象,例如 和 Import-PSSession cmdlet 返回的对象Get-Module

Type:String[]
Aliases:PSSnapin
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-Name

指定一个名称数组。 此 cmdlet 仅获取具有指定名称的命令。 输入一个名称或名称模式。 允许使用通配符。

若要获取具有相同名称的命令,请使用 All 参数。 当两个命令具有相同的名称时,默认情况下, Get-Command 将获取在键入命令名称时运行的命令。

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-Noun

指定命令名词的数组。 此 cmdlet 获取具有包含指定名词的名称的命令,其中包括 cmdlet、函数和别名。 输入一个或多个名词或名词模式。 允许使用通配符。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-ParameterName

指定参数名称的数组。 此 cmdlet 获取会话中具有指定参数的命令。 输入参数名称或参数别名。 支持使用通配符。

ParameterNameParameterType 参数仅搜索当前会话中的命令。

已在 Windows PowerShell 3.0 中引入了此参数。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-ParameterType

指定参数名称的数组。 此 cmdlet 获取会话中具有指定类型的参数的命令。 输入参数类型的全名或部分名称。 支持使用通配符。

ParameterNameParameterType 参数仅搜索当前会话中的命令。

已在 Windows PowerShell 3.0 中引入了此参数。

Type:PSTypeName[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-ShowCommandInfo

指示此 cmdlet 显示命令信息。

此参数是在 Windows PowerShell 5.0 中引入的。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Syntax

指示此 cmdlet 仅获取有关命令的以下指定数据:

  • 别名。 获取标准名称。
  • Cmdlet。 获取语法。
  • 函数和筛选器。 获取函数定义。
  • 脚本和应用程序或文件。 获取路径和文件名。
Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-TotalCount

指定要获取的命令数。 可以使用此参数来限制命令的输出。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-UseFuzzyMatching

指示在查找命令时使用模糊匹配算法。 输出的顺序是从最接近的匹配到最不可能匹配的顺序。 通配符不应与模糊匹配一起使用,因为它将尝试匹配可能包含这些通配符的命令。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Verb

指定命令谓词的数组。 此 cmdlet 获取名称包含指定谓词的命令,其中包括 cmdlet、函数和别名。 输入一个或多个谓词或谓词模式。 允许使用通配符。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

输入

String

可以通过管道将命令名称传递给此 cmdlet。

输出

CommandInfo

此 cmdlet 返回派生自 CommandInfo 类的对象。 返回的对象类型取决于获取的命令 Get-Command 的类型。

AliasInfo

表示别名。

ApplicationInfo

表示应用程序和文件。

CmdletInfo

表示 cmdlet。

FunctionInfo

表示函数和筛选器。

备注

  • 如果会话可以使用多个同名的命令, Get-Command 则返回在键入命令名称时运行的命令。 若要获取同名的命令(按运行顺序列出),请使用 All 参数。 有关详细信息,请参阅 about_Command_Precedence
  • 自动导入模块时,效果与使用 Import-Module cmdlet 的效果相同。 该模块可以添加命令、类型和格式设置文件,并在会话中运行脚本。 若要启用、禁用和配置模块的自动导入,请使用 $PSModuleAutoLoadingPreference 首选项变量。 有关详细信息,请参阅 about_Preference_Variables