共用方式為


在終端機中使用 Tab 鍵自動完成

PowerShell 提供自動完成功能,以提供提示、啟用探索,以及加速輸入。 只要按 Tab 鍵,即可完成命令名稱、參數名稱、自變數值和檔案路徑。

Tab 鍵是 Windows 上的預設鍵綁定。 PSReadLine 也提供 MenuComplete 系結至 Ctrl+空格鍵的函式。 函數 MenuComplete 會在命令列下方顯示符合條件的完成清單。

您可以使用 PSReadLine Cmdlet 或裝載 PowerShell 的應用程式來變更這些金鑰系結。 非 Windows 平臺上的 Keybinding 可能不同。 如需詳細資訊,請參閱 about_PSReadLine_Functions

內建索引標籤自動完成功能

PowerShell 已針對命令列體驗的許多層面提供索引標籤自動完成。

檔名完成

若要自動填入可用選項的檔名或路徑,請輸入名稱的一部分,然後按 Tab 鍵 鍵。 PowerShell 會自動將名稱展開至其找到的第一個相符對象。 按下 Tab 鍵會再次迴圈查看每個按鍵按下的所有可用選項。

命令和參數名稱完成

Cmdlet 名稱的索引標籤擴充稍微不同。 若要在 Cmdlet 名稱上使用索引標籤展開,請輸入名稱的第一部分(動詞)及其後的連字號。 您可以填入更多名稱的一部分以進行部分匹配。 例如,如果您輸入 get-co ,然後按 Tab 鍵,PowerShell 會自動將此項目展開至 Get-Command Cmdlet(請注意,它也會將字母大小寫變更為標準格式)。 如果您再次按 Tab 鍵 鍵,PowerShell 會將它取代為唯一其他相符的 Cmdlet 名稱,Get-Content。 Tab 鍵自動完成也可用於辨識 PowerShell 別名及原生執行檔。

下圖顯示索引標籤和功能表完成的範例。

索引標籤和功能表完成範例

其他標籤補全功能增強

每個 PowerShell 的新版本都改進了自動完成功能,修正了錯誤並提升了可用性。

PowerShell 7.0

  • 按鍵自動完成解析列舉型或類型受限的變數賦值
  • Tab 鍵自動完成會展開縮寫的 Cmdlet 和函式。 例如, i-psdf<tab> 傳回 Import-PowerShellDataFile

PowerShell 7.2

  • 修正未本地化 about* 主題的索引標籤完成
  • 修正在完成時將噴濺視為位置參數
  • 新增基於批註的說明關鍵詞補全
  • #Requires 語句新增補全
  • Cmdlet 的 Format-* 參數新增自動補完功能
  • 新增對類別型自變數完成項的支援

PowerShell 7.3

  • 修正於指定的腳本區塊內的標籤補全 ValidateScriptAttribute
  • breakcontinue 之後新增迴圈標籤的自動補全功能
  • 改善多種情境中的哈希表功能完善
    • 參數散布
    • 引數參數Invoke-CimMethod
    • FilterHashtable 參數 Get-WinEvent
    • CIM Cmdlet 的屬性參數
    • 從成員完成情境中移除重複項目
  • 支援網路共用中的正斜線 (UNC 路徑) 完成
  • 改善成員自動補全功能
  • 優先考慮 ValidateSet 完成項目而非參數列舉
  • 新增對具有型別參數的泛型方法的類型推斷支援
  • 改善類型推斷和完成
    • 允許將方法顯示於完成結果中 ForEach-Object -MemberName
    • 防止在傳回 void 的表示式上完成 ,例如 ([void]("")
    • 允許非預設類別建構函式在類別完成以 AST 為基礎時顯示

增強命令參數按鍵完成的其他方式

內建索引標籤擴充是由內部函數 TabExpansionTabExpansion2 所控制。 您可以建立函式或模組來取代這些函式的預設行為。 您可以藉由搜尋 TabExpansion 關鍵詞,在 PowerShell 資源庫中尋找範例。

使用ValidateSetArgumentCompletions屬性搭配參數

屬性 ArgumentCompletions 可讓您將索引標籤自動完成值新增至特定參數。 屬性 ArgumentCompletions 類似於 ValidateSet。 這兩個屬性在使用者按下參數名稱後按下 Tab 鍵時,會提供一個要顯示的值清單。 不過,不同於 ValidateSet,不會驗證值。

如需詳細資訊,請參閱:

使用ArgumentCompleter屬性或與Register-ArgumentCompleter參數搭配使用

參數完成器是腳本區塊或函式,可為參數值提供動態索引標籤完成。

屬性 ArgumentCompleter 可讓您註冊函式,為 參數提供索引標籤完成值。 參數完成器函式必須可供包含具有ArgumentCompleter屬性的參數的函式使用。 函式通常會在相同的腳本或模組中定義。

如需詳細資訊,請參閱 ArgumentCompleter

Cmdlet 會在執行時將腳本區塊註冊為引數補全函式,以用於您指定的任何命令。 這可讓您定義腳本或模組之外或原生命令的自變數完成項。 如需詳細資訊,請參閱 Register-ArgumentCompleter

PSReadLine 中的預測性 IntelliSense

PSReadLine 2.1.0 引進 預測性 IntelliSense 功能。 預測 IntelliSense 會根據 PSReadLine 歷程記錄中的項目,提供完整命令的建議。

PSReadLine 2.2.2 增加了對使用進階邏輯的外掛程式模組的支援,進而拓展了預測式 IntelliSense 的功能,能提供完整命令的建議。 Az.Tools.Predictor 模組是預測性 IntelliSense 的第一個外掛程式。 它會使用 Machine Learning 來預測您想要執行的 Azure PowerShell 命令,以及您想要使用的參數。

如需詳細資訊,請參閱 使用預測值