获取有关 cmdlet 以及有关 Windows PowerShell 命令的其他元素的基本信息。

语法

Get-Command [[-Name] <string[]>] [-CommandType {<Alias> | <Function> | <Filter> | <Cmdlet> | <ExternalScript> | <Application> | <Script> | <All>}] [[-ArgumentList] <Object[]>] [-Module <string[]>] [-语法] [-TotalCount <int>] [<CommonParameters>]

Get-Command [-Noun <string[]>] [-Verb <string[]>] [[-ArgumentList] <Object[]>] [-Module <string[]>] [-语法] [-TotalCount <int>] [<CommonParameters>]

说明

Get-Command cmdlet 获取会话中 Windows PowerShell 命令的 cmdlet 及其他元素(例如,别名、函数、筛选器、脚本和应用程序)的基本信息。

Get-Command 直接从 cmdlet、函数、脚本或别名的代码中获取其数据,而不像 Get-Help 那样从帮助主题文件中获取其信息。

如果不使用参数,“Get-Command”将获取当前会话中的所有 cmdlet 和函数。“Get-Command *”获取所有 Windows PowerShell 元素以及 Path 环境变量 ($env:path) 中的所有非 Windows-PowerShell 文件。它将这些文件归入“Application”命令类型。

可以使用 Get-Command 的 Module 参数查找通过添加 Windows PowerShell 管理单元或导入模块而添加到会话中的命令。

参数

-ArgumentList <Object[]>

获取 cmdlet 或函数在与指定的参数(如 path)一起使用时的信息。ArgumentList 的别名为 Args。

要检测在 cmdlet 与特定的提供程序一起使用时添加到 cmdlet 中的参数,请将 ArgumentList 的值设置为提供程序驱动器中的一条路径,如“HKML\Software”或“cert:\my”。

是否为必需?

false

位置?

2

默认值

是否接受管道输入?

false

是否接受通配符?

false

-CommandType <CommandTypes>

只获取指定类型的命令。使用“CommandType”或它的别名“Type”。默认情况下,Get-Command 获取 cmdlet 和函数。

有效值包括:

-- Alias:当前会话中的所有 Windows PowerShell 别名。

-- All:所有命令类型。它与“get-command *”等效。

-- Application:位于 Path 环境变量 ($env:path) 所列路径中的所有非 Windows-PowerShell 文件,例如 .txt、.exe 和 .dll 文件。

-- Cmdlet:当前会话中的 cmdlet。默认值为“Cmdlet”。

-- ExternalScript:位于 Path 环境变量 ($env:path) 所列路径中的全部 .ps1 文件。

-- Filter and Function:所有 Windows PowerShell 函数。

-- Script:当前会话中的脚本块。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

false

-Module <string[]>

获取源自指定模块或管理单元的命令。输入模块或管理单元的名称,或输入管理单元或模块对象。

可以使用此参数的名称 Module 或其别名 PSSnapin 对其进行引用。选择的参数名称不会影响到命令或命令的输出。

此参数接受字符串值,但您也可以提供 PSModuleInfo 或 PSSnapinInfo 对象(如 Get-Module、Get-PSSnapin 和 Import-PSSession 返回的对象)。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

false

-Name <string[]>

只获取具有指定名称的 cmdlet 或命令元素的相关信息。<字符串> 表示 cmdlet 或命令元素的名称的全部或一部分。允许使用通配符。

要按执行顺序列出具有相同名称的命令,请键入不含通配符的命令名称。有关详细信息,请参阅“注释”部分。

是否为必需?

false

位置?

1

默认值

是否接受管道输入?

true (ByValue, ByPropertyName)

是否接受通配符?

false

-Noun <string[]>

获取名称包含指定名词的 cmdlet 和函数。<字符串> 表示一个或多个名词或名词模式,例如,“process”或“*item*”。允许使用通配符。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

false

-语法

只获取有关命令元素的指定数据。

* 对于别名,检索标准名称。

* 对于 cmdlet,检索语法。

* 对于函数和筛选器,检索函数定义。

* 对于脚本和应用程序(文件),检索路径和文件名。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

false

-TotalCount <int>

只获取指定数量的命令元素。可使用此参数限制命令的输出。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

false

-Verb <string[]>

获取名称包含指定动词的 cmdlet 和函数的信息。<字符串> 表示一个或多个动词或动词模式,例如,“remove”或“*et”。允许使用通配符。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

false

<CommonParameters>

此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.

输入和输出

输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。

输入

System.String

可以通过管道将指定的名词属性“Name”、“Command”和“Verb”或字符串对象传递给 Get-Command。

输出

Object

返回的对象类型取决于检索到的命令元素的类型。例如,对 cmdlet 使用 Get-Command 将检索 CmdletInfo 对象,而对 DLL 使用 Get-Command 则检索 ApplicationInfo 对象。

说明

在不使用参数的情况下,“Get-Command”将获取有关 Windows PowerShell cmdlet 和函数的信息。请使用参数来限定所检索的元素。

Get-Help 显示基于 XML 的帮助主题文件中的内容不同,Get-Command 直接从系统中的 cmdlet 代码获取其 cmdlet 信息。

Get-Command 按字母顺序返回命令。如果会话中多个命令同名,则 Get-Command 按执行顺序返回命令。列出的第一个命令是在未限定的情况下键入命令名称时运行的命令。有关详细信息,请参阅 about_Command_Precedence。

示例 1

C:\PS>get-command

说明
-----------
此命令获取所有 Windows PowerShell cmdlet 和函数的相关信息。

默认显示会列出命令类型(“Cmdlet”、“函数”或“筛选器”),cmdlet 或函数的名称以及语法或函数定义。






示例 2

C:\PS>get-command -verb set | format-list

说明
-----------
此命令获取所有包含动词“set”的 cmdlet 和函数的相关信息,并在列表中显示其中的部分信息。

列表格式包括表显示中省略的字段,包括完整语法。要显示所有字段(对象的所有属性),请键入“get-command -verb set | format-list *”。






示例 3

C:\PS>get-command -type cmdlet | sort-object noun | format-table -group noun

说明
-----------
此命令检索所有的 cmdlet,并按 cmdlet 名称中名词的字母顺序对它们进行排序,
然后在基于名词的组中显示它们。此显示结果可帮助您查找任务的 cmdlet。

默认情况下,Get-Command 按系统发现项的顺序显示这些项,在运行命令不明确时,这也是选择它们运行的顺序。






示例 4

C:\PS>get-command -module Microsoft.PowerShell.Security, TestModule

说明
-----------
此命令获取 Microsoft.PowerShell.Security 管理单元和 Test-Module 模块中的命令。

Module 参数获取通过导入模块或添加 Windows PowerShell 管理单元而添加的命令。






示例 5

C:\PS>get-command get-childitem -args cert: -syntax

说明
-----------
此命令检索在 Get-ChildItem 与 Windows PowerShell 证书提供程序一起使用时 Get-ChildItem cmdlet 的相关信息。

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






示例 6

C:\PS>(get-command get-childitem -ArgumentList cert:).parametersets[0].parameters | where-object { $_.IsDynamic }

说明
-----------
如果将此命令与 Windows PowerShell 证书提供程序一起使用,则此命令只检索动态添加到 Get-ChildItem cmdlet 的参数。这是上一示例中使用方法的替代方法。

在此命令中,将首先处理“get-command get-childitem -ArgumentList cert:”。如果将此命令与证书提供程序一起使用,则它将向 Get-Command 请求 Get-ChildItem cmdlet 的相关信息。“.parametersets[0]”选择“get-childitem -argumentList cert:”的第一个参数集 (set 0),而“.parameters”选择该参数集中的参数。所得到的参数将通过管道传递给 Where-Object cmdlet,以便通过使用 IsDynamic 属性来测试每个参数(“$_.”)。若要查找命令中对象的属性,请使用 Get-Member。






示例 7

C:\PS>get-command *

说明
-----------
此命令获取当前控制台中的 Windows PowerShell cmdlet、函数、筛选器、脚本和别名的信息。

此命令还获取位于 Path 环境变量 ($env:path) 的路径中的所有文件的相关信息。它针对每个文件返回一个 ApplicationInfo 对象 (System.Management.Automation.ApplicationInfo),而不是 FileInfo 对象 (System.IO.FileInfo)。






示例 8

C:\PS>get-command | where-object {$_.definition -like "*first*"}

CommandType     Name                        Definition
-----------     ----                        ---------
Cmdlet          Select-Object               Select-Object [[-Property]

说明
-----------
此命令基于 cmdlet 或函数的某个参数的名称查找 cmdlet 或函数。当您只能回想起 cmdlet 或函数的某个参数的名称时,可以使用此命令对其进行标识。

在本例中,您只记得 cmdlet 或函数之一有一个获取列表中前“n”个对象的 First 参数,但您无法记起具体是哪个 cmdlet。

此命令使用 Get-Command cmdlet 获取表示会话中的每个 cmdlet 和函数的 CmdletInfo 对象。CmdletInfo 对象具有一个 Definition 属性,它包含 cmdlet 或函数的语法(包含其参数)。

该命令使用管道运算符 (|) 将 CmdletInfo 对象传递给 Where-Object cmdlet,后者检查每个对象 ($_) 的定义(语法)以找到包含“first”的值。

结果显示 First 参数属于 Select-Object cmdlet。






示例 9

C:\PS>get-command dir | format-list

Name              : dir
CommandType       : Alias
Definition        : Get-ChildItem
ReferencedCommand : Get-ChildItem
ResolvedCommand   : Get-ChildItem

说明
-----------
此示例说明如何将 Get-Command cmdlet 与别名结合使用。尽管 Get-Command 通常用于 cmdlet,但它也显示脚本、函数、别名和可执行文件中的代码的有关信息。

此命令显示当前控制台中的“dir”别名。该命令通过管道将结果传递给 Format-List cmdlet。






示例 10

C:\PS>get-command notepad

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

说明
-----------
此示例说明如何使用 Get-Command 来确定当 Windows PowerShell 访问到名称相同的多个命令时,具体会运行哪个命令。当使用不含通配符的 Name 参数时,Get-Command 会按执行的优先级顺序列出具有该名称的命令。

此命令显示当您键入没有完全限定路径的“Notepad”时,Windows PowerShell 将运行哪个 Notepad 程序。该命令使用没有通配符的 Name 参数。

该示例输出显示了当前控制台中的 Notepad 命令。这表示 Windows PowerShell 将运行 C:\Windows\System32 目录中 Notepad.exe 的实例。






示例 11

C:\PS>(get-command get-date).pssnapin

C:\PS> (get-command remove-gpo).module

说明
-----------
这些命令说明如何查找特定 cmdlet 所源自的管理单元或模块。

第一条命令使用 CmdletInfo 对象的 PSSnapin 属性查找添加了 Get-Date cmdlet 的管理单元。

第二条命令使用 CmdletInfo 对象的 Module 属性查找添加了 Remove-GPO cmdlet 的模块。






另请参阅




目录