共用方式為


Get-Command

取得所有命令。

語法

CmdletSet (預設值)

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

AllCommandSet

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

Description

Get-Command Cmdlet 會取得電腦上安裝的所有命令,包括 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 數據行新的 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 的語法

此命令會使用 ArgumentListSyntax 參數,在 Cert: 磁碟驅動器中使用時取得 Get-ChildItem Cmdlet 的語法。 憑證:磁碟驅動器是憑證提供者新增至會話的PowerShell磁碟驅動器。

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

當您將輸出中顯示的語法與省略 ArgsArgumentList) 參數時顯示的語法進行比較時,您會看到 憑證提供者 將動態參數 CodeSigningCert新增至 Get-ChildItem Cmdlet。

如需憑證提供者的詳細資訊,請參閱 about_Certificate_Provider

範例 7:取得動態參數

範例中的 命令會使用 Get-DynamicParameters 函式,取得憑證提供者在 Cert: 磁碟驅動器中使用憑證提供者時新增至 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 或提供者新增至 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 dir
CommandType     Name                                               ModuleName
-----------     ----                                               ----------
Alias           dir -> Get-ChildItem

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

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

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

這個範例會使用 Cmdlet 的 Get-Command 參數,在本機電腦上顯示 “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 的模組名稱

此命令會取得產生 Get-Date Cmdlet 之模組的名稱。 此命令會使用所有命令的 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 傳送至 Cmdlet,該 Cmdlet 只會選取填入 outputType 属性 。 另一個管線運算符會將選取的 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 所有物件的內建屬性,以取得描述對象的類型。 若要取得 net adapter 的 PSTypeNames 屬性,而不是 net adapters 集合的 PSTypeNames 属性,命令會使用數位表示法來取得 Cmdlet 傳回的第一個 net adapter。 若要取得 net adapter 的 PSTypeNames 屬性,而不是 net adapters 集合的 PSTypeNames 属性,命令會使用數位表示法來取得 Cmdlet 傳回的第一個 net adapter。

參數

-All

表示此 Cmdlet 會取得所有命令,包括具有相同名稱之相同類型的命令。 根據預設,Get-Command 只會取得當您輸入命令名稱時執行的命令。

如需 PowerShell 用來選取命令以在多個命令具有相同名稱時執行之方法的詳細資訊,請參閱 about_Command_Precedence。 如需因名稱衝突而預設未執行之模組限定命令名稱和執行命令的相關信息,請參閱 about_Modules

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

在 Windows PowerShell 2.0 中,Get-Command 預設會取得所有命令。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-ArgumentList

指定自變數的陣列。 當 Cmdlet 與指定的參數搭配使用時,這個 Cmdlet 會取得 Cmdlet 或函式的相關信息(“arguments” ArgumentList 的別名 Args

若要偵測只有在使用某些其他參數時可用的動態參數,請將 ArgumentList 的值設定為觸發動態參數的參數

若要偵測提供者新增至 Cmdlet 的動態參數,請將 ArgumentList 參數的值設定為提供者磁碟驅動器中的路徑,例如 WSMan:、HKLM:或 Cert:。 當命令是 PowerShell 提供者 Cmdlet 時,在每個命令中只輸入一個路徑。 提供者 Cmdlet 只會傳回 ArgumentList值之第一個路徑的動態參數。 如需提供者 Cmdlet 的相關信息,請參閱 about_Providers

參數屬性

類型:

Object[]

預設值:None
支援萬用字元:False
不要顯示:False
別名:參數

參數集

(All)
Position:1
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值: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 環境變數中所列路徑中的所有 .ps1 檔案($env:path)。
  • 篩選和函式。 取得所有 PowerShell 進階和簡單函式和篩選。
  • 腳本。 取得所有腳本區塊。 若要取得 PowerShell 腳本(.ps1 檔案),請使用 ExternalScript 值。
  • 工作流程。 取得所有工作流程。 如需工作流程的詳細資訊,請參閱 Windows PowerShell 工作流程簡介。

參數屬性

類型:CommandTypes
預設值:None
接受的值:Alias, Function, Filter, Cmdlet, ExternalScript, Application, Script, Workflow, Configuration, All
支援萬用字元:False
不要顯示:False
別名:類型

參數集

AllCommandSet
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-FullyQualifiedModule

指定名稱以ModuleSpecification物件形式指定的模組,如ModuleSpecification構造函數 (Hashtable)“備註”部分所述。 例如, FullyQualifiedModule 參數接受以下列格式之一指定的模組名稱:

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

需要 ModuleNameModuleVersion,但 Guid 是選擇性的。

您無法在與 Module 參數相同的命令中指定 FullyQualifiedModule 參數。 這兩個參數互斥。

參數屬性

類型:

ModuleSpecification[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-ListImported

表示此 Cmdlet 只會取得目前工作階段中的命令。

從 PowerShell 3.0 開始,根據預設,Get-Command 會取得所有已安裝的命令,包括目前工作階段中的命令,但不受限制。 在 PowerShell 2.0 中,它只會取得目前會話中的命令。

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

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Module

指定模組的陣列。 此 Cmdlet 會取得來自指定模組或嵌入式管理單元的命令。輸入模組或嵌入式管理單元的名稱。

此參數接受字串值,但此參數的值也可以是 PSModuleInfoPSSnapinInfo 物件,例如 Get-ModuleGet-PSSnapinImport-PSSession Cmdlet 傳回的物件。

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

參數屬性

類型:

String[]

預設值:None
支援萬用字元:True
不要顯示:False
別名:PSSnapin

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Name

指定名稱的陣列。 此 Cmdlet 只會取得具有指定名稱的命令。 輸入名稱或名稱模式。 允許使用通配符字元。

若要取得具有相同名稱的命令,請使用 All 參數。 當兩個命令具有相同的名稱時,根據預設,Get-Command 會取得當您輸入命令名稱時執行的命令。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:True
不要顯示:False

參數集

AllCommandSet
Position:0
必要:False
來自管線的值:True
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Noun

指定命令名詞的陣列。 此 Cmdlet 會取得包含 Cmdlet、函式和別名的命令,其中包含包含指定名詞的名稱。 輸入一或多個名詞或名詞模式。 允許使用通配符字元。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:True
不要顯示:False

參數集

CmdletSet
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-ParameterName

指定參數名稱的陣列。 此 Cmdlet 會取得會話中具有指定參數的命令。 輸入參數名稱或參數別名。 支援通配符。

ParameterNameParameterType 參數只會搜尋目前工作階段中的命令。

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

參數屬性

類型:

String[]

預設值:None
支援萬用字元:True
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-ParameterType

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

ParameterNameParameterType 參數只會搜尋目前工作階段中的命令。

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

參數屬性

類型:

PSTypeName[]

預設值:None
支援萬用字元:True
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-ShowCommandInfo

指出此 Cmdlet 會顯示命令資訊。

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

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Syntax

指出此 Cmdlet 只會取得下列命令的指定資料:

  • 別名。 取得標準名稱。
  • Cmdlet。 取得語法。
  • 函式和篩選條件。 取得函式定義。
  • 腳本和應用程式或檔案。 取得路徑和檔名。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-TotalCount

指定要取得的命令數目。 您可以使用此參數來限制命令的輸出。

參數屬性

類型:Int32
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Verb

指定命令動詞的陣列。 此 Cmdlet 會取得命令,其中包含包含指定動詞名稱的 Cmdlet、函式和別名。 輸入一或多個動詞或動詞模式。 允許使用通配符字元。

參數屬性

類型:

String[]

預設值:None
支援萬用字元:True
不要顯示:False

參數集

CmdletSet
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

CommonParameters

此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters

輸入

String

您可以使用管線將命令名稱傳送至此 Cmdlet。

輸出

CommandInfo

此 Cmdlet 會傳回衍生自 CommandInfo 類別的物件。 傳回的物件類型取決於 Get-Command 取得的命令類型。

AliasInfo

表示別名。

ApplicationInfo

表示應用程式和檔案。

CmdletInfo

表示 Cmdlet。

FunctionInfo

表示函式和篩選。

WorkflowInfo

表示工作流程。

備註

  • 當工作階段有多個具有相同名稱的命令可供會話使用時,Get-Command 會傳回當您輸入命令名稱時執行的命令。 若要取得具有相同名稱的命令,請依執行順序列出,請使用 All 參數。 如需詳細資訊,請參閱 about_Command_Precedence
  • 自動匯入模組時,效果會與使用 Import-Module Cmdlet 相同。 模組可以新增命令、類型和格式化檔案,並在會話中執行腳本。 若要啟用、停用和設定模組的自動匯入,請使用 $PSModuleAutoLoadingPreference 喜好設定變數。 如需詳細資訊,請參閱 about_Preference_Variables