Share via


Get-Command

取得所有命令。

Syntax

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[]>]
   [<CommonParameters>]

Description

Cmdlet Get-Command 會取得計算機上安裝的所有命令,包括 Cmdlet、別名、函式、篩選、腳本和應用程式。 Get-Command 會從 PowerShell 模組和從其他工作階段匯入的命令取得命令。 若要只取得已匯入至目前會話的命令,請使用 ListImported 參數。

如果沒有參數, Get-Command 則會取得計算機上安裝的所有 Cmdlet、函式和別名。 Get-Command * 會取得所有類型的命令,包括Path環境變數中所有非PowerShell檔案,$env:Path其會列在Application命令類型中。

Get-Command 會使用命令的確切名稱,而不使用通配符,會自動匯入包含命令的模組,以便您立即使用 命令。 若要啟用、停用及設定模組的自動匯入,請使用 $PSModuleAutoLoadingPreference 喜好設定變數。 如需詳細資訊,請參閱 about_Preference_Variables

Get-Command 會直接從命令程式代碼取得其數據,不同於 Get-Help,它會從說明主題取得其資訊。

從 Windows PowerShell 5.0 開始,Cmdlet 的結果Get-Command預設會顯示 Version 數據行新的 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 的相關信息

此命令會取得 Cmdlet 的相關信息 Get-AppLockerPolicy 。 它也會匯入 AppLocker 模組,以將 AppLocker 模組中的所有命令新增至目前的作業階段。

Get-Command Get-AppLockerPolicy

自動匯入模組時,效果會與使用 Import-Module Cmdlet 相同。 模組可以新增命令、類型和格式化檔案,並在會話中執行腳本。 若要啟用、停用和設定模組的自動匯入,請使用 $PSModuleAutoLoadingPreference 喜好設定變數。 如需詳細資訊,請參閱 about_Preference_Variables

範例 6:取得 Cmdlet 的語法

此命令會使用 ArgumentListSyntax 參數,在 Cert: 磁碟驅動器中使用 Cmdlet 時取得其語法Get-ChildItem 憑證:磁碟驅動器是憑證提供者新增至會話的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

此命令會取得具有參數的 Cmdlet,其名稱包含 Auth,且其類型為 AuthenticationMechanism

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

雖然它通常用於 Cmdlet 和函式, Get-Command 但也會取得腳本、函式、別名和可執行檔。

命令的輸出會顯示別名之 Name 屬性值的特殊檢視。 檢視會顯示別名和完整的命令名稱。

範例 11:取得 記事本 命令的所有實例

這個範例會使用 Cmdlet 的 Get-Command 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

範例 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 的 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

此命令會尋找以 net adapter 對象作為輸入的 Cmdlet。 您可以使用此指令格式來尋找接受任何命令傳回之物件類型的 Cmdlet。

此命令會使用 所有物件的 PSTypeNames 內建屬性,以取得描述對象的類型。 若要取得 網路適配器的 PSTypeNames 屬性,而不是 net adapters 集合的 PSTypeNames 屬性,命令會使用數位表示法取得 Cmdlet 傳回的第一個網路適配器。 若要取得 網路適配器的 PSTypeNames 屬性,而不是 net adapters 集合的 PSTypeNames 屬性,命令會使用數位表示法取得 Cmdlet 傳回的第一個網路適配器。

參數

-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:False
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ArgumentList

指定自變數的陣列。 當 Cmdlet 與指定的參數搭配使用時,這個 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 或其別名類型。 根據預設, Get-Command 取得所有 Cmdlet、函式和別名。

此參數可接受的值為:

  • Alias:取得所有 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 值。

  • Workflow:取得所有工作流程。 如需工作流程的詳細資訊,請參閱 Windows PowerShell 工作流程簡介。

這些值會定義為旗標型列舉。 您可以將多個值結合在一起,以使用此參數來設定多個旗標。 這些值可以傳遞至 CommandType 參數做為值的陣列,或是這些值的逗號分隔字串。 Cmdlet 會使用二進位 OR 作業來合併值。 將值當做數位傳遞是最簡單的選項,也可讓您在值上使用 Tab 鍵自動完成。

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

此值可以是模組名稱、完整模組規格或模組檔案的路徑。

當值為路徑時,路徑可以是完整或相對路徑。 相對於包含 using 語句的腳本,會解析相對路徑。

當值是名稱或模組規格時,PowerShell 會 搜尋 PSModulePath 中的指定模組。

模組規格是具有下列索引鍵的哈希表。

  • ModuleName - 必要 指定模組名稱。

  • GUID - 選擇性 指定模組的 GUID。

  • 也必須指定下列三個索引鍵中的至少一個。

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

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

    • RequiredVersion - 指定模組的確切必要版本。 這無法與其他版本金鑰搭配使用。

您無法在與 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 或 PSSnapinInfo 物件,例如 、 Get-PSSnapinImport-PSSession Cmdlet 傳回的物件。Get-Module

您可以依其名稱、 Module 或別名 PSSnapin 來參考此參數。 您選擇的參數名稱不會影響命令輸出。

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 會取得會話中具有指定參數的命令。 輸入參數名稱或參數別名。 支援使用萬用字元。

ParameterName ParameterType 參數只會搜尋目前會話中的命令。

此參數是在 Windows PowerShell 3.0 中引進的。

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

-ParameterType

指定參數名稱的陣列。 此 Cmdlet 會取得會話中具有指定型別參數的命令。 輸入參數類型的完整名稱或部分名稱。 支援使用萬用字元。

ParameterName ParameterType 參數只會搜尋目前會話中的命令。

此參數是在 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

-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

表示函式和篩選。

WorkflowInfo

表示工作流程。

備註

Windows PowerShell 包含下列的 Get-Command別名:

  • gcm

  • 當工作階段有多個具有相同名稱的命令可供會話使用時, Get-Command 傳回當您輸入命令名稱時執行的命令。 若要取得具有相同名稱的命令,請依執行順序列出,請使用 All 參數。 如需詳細資訊,請參閱 about_Command_Precedence

  • 自動匯入模組時,效果會與使用 Import-Module Cmdlet 相同。 模組可以新增命令、類型和格式化檔案,並在會話中執行腳本。 若要啟用、停用和設定模組的自動匯入,請使用 $PSModuleAutoLoadingPreference 喜好設定變數。 如需詳細資訊,請參閱 about_Preference_Variables