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[]>]
[-UseFuzzyMatching]
[-UseAbbreviationExpansion]
[<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 的語法
此命令會使用 ArgumentList 和 Syntax 參數,在 Cert: 磁碟驅動器中使用 Cmdlet 時取得該 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,其名稱包含驗證,且其類型為 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:從別名取得語法
此範例示範如何取得語法以及別名的標準名稱。
命令的輸出會顯示具有標準名稱的標示別名,後面接著 語法。
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:取得記事本命令的所有實例
這個範例會使用 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。
範例 13:取得包含 Cmdlet 的模組名稱
此命令會取得 Cmdlet 的來源模組 Get-Date
名稱。
此命令會使用所有命令的 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 的名稱和輸出類型。
CommandInfo 物件的 OutputType 屬性只有在 Cmdlet 程式碼定義了 Cmdlet 的 OutputType 屬性時才會具有非 Null 的值。
範例 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
預設會取得所有命令。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
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 或它的別名 Type。 根據預設, Get-Command
會取得所有 Cmdlet、函式和別名。
此參數可接受的值為:
Alias
:取得所有 PowerShell 命令的別名。 如需詳細資訊,請參閱 about_Aliases。All
:取得所有命令類型。 這個參數值相當於Get-Command *
。Application
:取得 路徑 環境變數 ()$env:path
中列出的非 PowerShell 檔案,包括 .txt、.exe 和 .dll 檔案。 如需 Path 環境變數的詳細資訊,請參閱 about_Environment_Variables。Cmdlet
:取得所有 Cmdlet。ExternalScript
:取得 路徑 環境變數 () 所列路徑中的所有 .ps1$env:path
檔案。Filter
和Function
:取得所有 PowerShell 進階和簡單函式和篩選。Script
:取得所有腳本區塊。 若要) (.ps1 檔案取得 PowerShell 腳本,請使用ExternalScript
值。
這些值會定義為旗標型列舉。 您可以使用此參數將多個值結合在一起,以設定多個旗標。 這些值可以傳遞至 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
Specifies modules with names that are specified in the form of ModuleSpecification objects, described in the Remarks section of ModuleSpecification Constructor (Hashtable). 例如, FullyQualifiedModule 參數接受以下列其中一種格式指定的模組名稱:
@{ModuleName = "modulename"; ModuleVersion = "version_number"}
@{ModuleName = "modulename"; ModuleVersion = "version_number"; Guid = "GUID"}
ModuleName 和 ModuleVersion 是必要參數,但 Guid 是選擇性參數。
您無法在與 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 物件,例如和 Import-PSSession
Cmdlet 傳回的物件Get-Module
。
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 |
-UseAbbreviationExpansion
表示使用命令中的字元比對來尋找命令中的大寫字元。 例如, i-psdf
會比 Import-PowerShellDataFile
對每個字元,以尋找結果中的大寫字元。 使用此類型的比對時,任何通配符都不會產生任何相符專案。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-UseFuzzyMatching
指出在尋找命令時使用模糊比對演算法。 輸出的順序是從最接近的相符專案到最可能相符的順序。 通配符不應與模糊比對搭配使用,因為它會嘗試比對可能包含這些通配符的命令。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Verb
指定命令動詞命令的陣列。 此 Cmdlet 會取得包含 Cmdlet、函式和別名的命令,其名稱包含指定的動詞。 輸入一或多個動詞或動詞模式。 允許使用萬用字元。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | True |
輸入
您可以使用管線將命令名稱傳送至此 Cmdlet。
輸出
此 Cmdlet 會傳回衍生自 CommandInfo 類別的物件。 傳回的物件類型取決於取得的命令 Get-Command
類型。
代表別名。
表示應用程式和檔案。
代表 Cmdlet。
表示函式和篩選。
備註
- 當工作階段有多個具有相同名稱的命令可供會話使用時,
Get-Command
傳回當您輸入命令名稱時所執行的命令。 若要取得具有相同名稱的命令,請依執行順序列出,請使用 All 參數。 如需詳細資訊,請參閱 about_Command_Precedence。 - 自動匯入模組時,效果會與使用
Import-Module
Cmdlet 相同。 模組可以新增命令、類型及格式化檔案,並在工作階段中執行指令碼。 若要啟用、停用和設定模組的自動匯入,請使用$PSModuleAutoLoadingPreference
喜好設定變數。 如需詳細資訊,請參閱 about_Preference_Variables。