当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Get-Command (Microsoft.PowerShell.Core)

作者:精品下载站 日期:2024-12-14 02:16:12 浏览:11 分类:玩电脑

Get-Command (Microsoft.PowerShell.Core)


Get-Command

模块 :Microsoft.PowerShell.Core

获取所有命令。

句法

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]
   [-FuzzyMinimumDistance <UInt32>]
   [-UseAbbreviationExpansion]
   [<CommonParameters>]

描述

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

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

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

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

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

示例

示例 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 的语法

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

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

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

有关证书提供程序的更多信息,请参阅 about_Certificate_Provider。

示例7:获取动态参数

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

function Get-DynamicParameters
{
    param ($Cmdlet, $PSDrive)
    (Get-Command -Name $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 或提供程序添加到 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。

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

示例 10:获取别名

此示例演示如何使用带有别名的 Get-Command cmdlet。

Get-Command -Name dir

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

虽然 Get-Command 通常用于 cmdlet 和函数,但它还可以获取脚本、函数、别名和可执行文件。

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

示例 11:从别名获取语法

此示例演示如何获取语法以及别名的标准名称。

该命令的输出显示带有标准名称的带标签别名,后跟语法。

Get-Command -Name dir -Syntax

dir (alias) -> Get-ChildItem

dir [[-Path] <string[]>] [[-Filter] <string>] [-Include <string[]>] [-Exclude <string[]>] [-Recurse] [-Depth <uint>] [-Force] [-Name] [-Attributes <FlagsExpression[FileAttributes]>] [-FollowSymlink] [-Directory] [-File] [-Hidden] [-ReadOnly] [-System] [<CommonParameters>]

dir [[-Filter] <string>] -LiteralPath <string[]> [-Include <string[]>] [-Exclude <string[]>] [-Recurse] [-Depth <uint>] [-Force] [-Name] [-Attributes <FlagsExpression[FileAttributes]>] [-FollowSymlink] [-Directory] [-File] [-Hidden] [-ReadOnly] [-System] [<CommonParameters>]

示例 12:获取 Notepad 命令的所有实例

此示例使用 Get-Command cmdlet 的 All 参数来显示本地计算机上 Notepad 命令的所有实例。

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。

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

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

(Get-Command Get-Date).ModuleName

Microsoft.PowerShell.Utility

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

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

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

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

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

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

示例 15:获取将特定对象类型作为输入的 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 运行的第一个网络适配器。返回。

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

在此示例中,命令名称故意拼写错误为“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 默认情况下获取所有命令。

类型 :

SwitchParameter

位置:

命名

默认值:

False

必需的:

False

接受管道输入:

True

接受通配符:

False

-ArgumentList

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

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

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

类型 :

Object[]

别名:

Args

位置:

1

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-CommandType

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

该参数可接受的值为:

  • 别名:获取所有PowerShell命令的别名。有关更多信息,请参阅 about_Aliases。

  • All:获取所有命令类型。此参数值相当于Get-Command *

  • Application:获取 Path 环境变量 ($env:path) 中列出的路径中的非 PowerShell 文件,包括 .txt.exe.dll 文件。有关 Path 环境变量的详细信息,请参阅 about_Environment_Variables。

  • Cmdlet:获取所有 cmdlet。

  • ExternalScript:获取 Path 环境变量 ($env:path) 中列出的路径中的所有 .ps1 文件。

  • FilterFunction:获取所有 PowerShell 高级和简单函数和过滤器。

  • Script:获取所有脚本块。要获取 PowerShell 脚本(.ps1 文件),请使用 ExternalScript 值。

这些值被定义为基于标志的枚举。您可以使用此参数将多个值组合在一起以设置多个标志。这些值可以作为值数组或这些值的逗号分隔字符串传递给 CommandType 参数。该 cmdlet 将使用二进制 OR 运算组合这些值。将值作为数组传递是最简单的选项,并且还允许您对值使用制表符补全。

类型 :

CommandTypes

别名:

Type

接受的值:

别名、函数、筛选器、Cmdlet、ExternalScript、应用程序、脚本、工作流、配置、全部

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

False

-FullyQualifiedModule

该值可以是模块名称、完整模块规范或模块文件的路径。

当该值是路径时,该路径可以是完全限定的或相对的。相对路径是相对于包含 using 语句的脚本进行解析的。

当该值为名称或模块规范时,PowerShell 会在 PSModulePath 中搜索指定的模块。

模块规范是一个具有以下键的哈希表。

  • ModuleName - 必需 指定模块名称。

  • GUID - 可选 指定模块的 GUID。

  • 必需至少指定以下三个键之一。

    • ModuleVersion - 指定模块的最低可接受版本。

  • MaximumVersion - 指定模块可接受的最大版本。

  • RequiredVersion - 指定模块的准确、必需的版本。它不能与其他版本密钥一起使用。

您不能在同一命令中将 FullyQualifiedModule 参数指定为 Module 参数。这两个参数是互斥的。

类型 :

模块规格[]

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

False

-FuzzyMinimumDistance

该参数允许过滤模糊结果或多或少准确。该距离是使用 Damerau Levenshtein Distance 算法计算的,该算法表示与原始值相匹配的步数。距离越短越准确。距离为零是完全匹配。

类型 :

UInt32

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-ListImported

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

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

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

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

False

-Module

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

该参数采用字符串值,但该参数的值也可以是 PSModuleInfo 对象,例如 Get-ModuleImport-PSSession cmdlet 返回。

类型 :

String[]

别名:

PSSnapin

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

True

-Name

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

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

类型 :

String[]

位置:

0

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

True

-Noun

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

类型 :

String[]

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

True

-ParameterName

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

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

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

类型 :

String[]

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

True

-ParameterType

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

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

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

类型 :

PS类型名称[]

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

True

-ShowCommandInfo

指示此 cmdlet 显示命令信息。

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

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Syntax

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

  • 别名。获取标准名称。
  • Cmdlet。获取语法。
  • 功能和过滤器。获取函数定义。
  • 脚本和应用程序或文件。获取路径和文件名。
类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

False

-TotalCount

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

类型 :

整数32

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

False

-UseAbbreviationExpansion

表示使用命令中的字符匹配来查找命令中的大写字符。例如,i-psdf 将匹配 Import-PowerShellDataFile,因为要查找的每个字符都与结果中的大写字符匹配。使用这种类型的匹配时,任何通配符都将导致不匹配。

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

False

-UseFuzzyMatching

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

类型 :

SwitchParameter

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

False

接受通配符:

False

-Verb

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

类型 :

String[]

位置:

命名

默认值:

None

必需的:

False

接受管道输入:

True

接受通配符:

True

输入

字符串

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

输出

命令信息

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

别名信息

代表别名。

应用信息

代表应用程序和文件。

CmdletInfo

代表 cmdlet。

功能信息

代表函数和过滤器。

笔记

PowerShell 包含以下 Get-Command 别名:

  • 所有平台:

      gcm
  • 当会话可以使用多个同名命令时,Get-Command 将返回您键入命令名称时运行的命令。要获取按运行顺序列出的同名命令,请使用 All 参数。有关详细信息,请参阅 about_Command_Precedence。

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

  • 您需要 登录账户 后才能发表评论

    取消回复欢迎 发表评论:

    关灯