取得 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 會取得工作階段中 Cmdlet 及其他 Windows PowerShell 命令元素 (例如別名、函數、篩選、指令碼和應用程式) 的基本資訊。

Get-Command 會直接從 Cmdlet、函數、指令碼或別名的程式碼中取得資料,不像 Get-Help 是從說明主題檔案取得資訊。

如果未指定參數,"Get-Command" 會取得目前工作階段中的所有 Cmdlet 和函數。"Get-Command *" 會取得所有 Windows PowerShell 元素以及 Path 環境變數 ($env:path) 中的所有非 Windows PowerShell 檔案。它會將這些檔案歸類為「應用程式」命令類型群組。

您可以使用 Get-Command 的 Module 參數尋找已透過新增 Windows PowerShell 嵌入式管理單元或透過匯入模組,新增至工作階段的命令。

參數

-ArgumentList <Object[]>

取得與指定的參數 (「引數」,例如路徑) 搭配使用的 Cmdlet 或函數的相關資訊。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 和 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 或命令元素的相關資訊。<String> 代表 cmdlet 或命令元素的部分或完整名稱。允許使用萬用字元。

若要以執行順序列出名稱相同的命令,請輸入不含萬用字元的命令名稱。如需詳細資訊,請參閱<附註>一節。

必要?

false

位置?

1

預設值

接受管線輸入?

true (ByValue, ByPropertyName)

接受萬用字元?

false

-Noun <string[]>

取得名稱中包含指定之名詞的 Cmdlet 和函數。<String> 代表一或多個名詞或名詞模式,例如 "process" 或 "*item*"。允許使用萬用字元。

必要?

false

位置?

named

預設值

接受管線輸入?

true (ByPropertyName)

接受萬用字元?

false

-語法

只擷取命令元素的指定資料。

* 對於別名,會擷取標準名稱。

* 對於 cmdlet,會擷取語法。

* 對於函數和篩選器,會擷取函數定義。

* 對於指令碼和應用程式 (檔案),會擷取路徑和檔名。

必要?

false

位置?

named

預設值

接受管線輸入?

true (ByPropertyName)

接受萬用字元?

false

-TotalCount <int>

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

必要?

false

位置?

named

預設值

接受管線輸入?

true (ByPropertyName)

接受萬用字元?

false

-Verb <string[]>

取得名稱中包含指定動詞之 Cmdlet 和函數的相關資訊。<String> 代表一或多個動詞或動詞模式,例如 "remove" 或 "*et"。允許使用萬用字元。

必要?

false

位置?

named

預設值

接受管線輸入?

true (ByPropertyName)

接受萬用字元?

false

<CommonParameters>

這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.

輸入和輸出

輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。

輸入

System.String

您可以經由管道將指定的「名稱」、「命令」和「動詞」名詞屬性或字串物件輸出至 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 Certificate 提供者一起使用時擷取 Get-ChildItem Cmdlet 的相關資訊。

如果比較輸出所顯示的語法和省略 Args (ArgumentList) 參數時所顯示的語法,您會發現到,Certificate 提供者以動態方式在 Get-ChildItem Cmdlet 中新增 CodeSigningCert 參數。






範例 6

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

描述
-----------
這個命令只會擷取當 Get-ChildItem Cmdlet 與 Windows PowerShell Certificate 提供者一起使用時以動態方式新增到此 Cmdlet 的參數。這是上一個範例中所用方法的另一項選擇。

在這個命令中,"get-command get-childitem -ArgumentList cert:" 會優先處理。與 Certificate 提供者搭配使用時,它會向 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 或函數。

在此例中,您記得其中一個 Cmdlet 或函數有 First 參數,可取得清單中的前 "n" 個物件,但不記得是哪個 Cmdlet。

這個命令會使用 Get-Command Cmdlet 取得代表工作階段中每個 Cmdlet 和函數的 CmdletInfo 物件。CmdletInfo 物件具有 Definition 屬性,其中包含 Cmdlet 或函數的語法,語法中則包含此 Cmdlet 或函數的參數。

這個命令會使用管線運算子 (|) 將 CmdletInfo 物件傳遞至 Where-Object Cmdlet,此 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 的模組。






請參閱




目錄