Get-Command
获取有关 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 的模块。
另请参阅
概念
about_Command_Precedence
Get-Help
Get-PSDrive
Get-Member
Import-PSSession
Export-PSSession