PowerShell では、ヒントを提供し、検出を有効にし、入力エントリを高速化するための入力の完了を提供します。 コマンド名、パラメーター名、引数の値、ファイル パスはすべて、Tab キーを押すことで完了できます。
Tab キーは、Windows の既定のキー バインドです。
PSReadLine には、MenuComplete
+ にバインドされた関数も用意されています。
MenuComplete
関数は、コマンドラインの下に一致する候補の一覧を表示します。
これらのキーバインドは、 PSReadLine コマンドレットまたは PowerShell をホストしているアプリケーションを使用して変更できます。 キーバインドは、Windows 以外のプラットフォームで異なる場合があります。 詳細については、「 about_PSReadLine_Functions」を参照してください。
組み込みのタブ補完機能
PowerShell では、コマンド ライン エクスペリエンスのさまざまな側面でタブ補完が有効になっています。
ファイル名補完
使用可能な選択肢からファイル名またはパスを自動的に入力するには、名前の一部を入力し、Tab キーを押します。 PowerShell は、見つけた最初の一致に自動的に名前を展開します。 Tab キーを押すたびに、利用可能なすべての選択肢を順に切り替えます。
コマンドとパラメーター名の補完機能
コマンドレット名のタブ展開は若干異なります。 コマンドレット名にタブ展開を使用するには、名前の最初の部分全体 (動詞) とその後に続くハイフンを入力します。 部分一致するよう、名前をより詳細に入力することもできます。 たとえば、「 get-co
」と入力し、 Tab キーを押すと、PowerShell は自動的にこれを Get-Command
コマンドレットに展開します (大文字と小文字も標準フォームに変更されます)。
Tab キーをもう一度押すと、PowerShell によって、他の一致する唯一のコマンドレット名 (Get-Content
) に置き換えられます。 タブ補完は、PowerShell エイリアスとネイティブ実行可能ファイルを解決する場合にも機能します。
次の図は、タブとメニューの補完例を示しています。
その他のタブ補完機能の強化
PowerShell の新しい各バージョンには、バグを修正し、使いやすさを向上させるタブ補完の機能強化が含まれています。
PowerShell 7.0
- タブ補完により、列挙型または型制約のある変数の割り当てが解決されます
- タブ補完機能では、省略されたコマンドレットと関数が展開されます。 たとえば、
i-psdf<tab>
はImport-PowerShellDataFile
を返す
PowerShell 7.2
- 非ローカライズ
about*
トピックのタブ補完を修正しました - 完了時に位置パラメーターとして扱われるスプラッティングを修正しました
- コメントベースのヘルプキーワードに対する入力補完を追加する
-
#Requires
ステートメントの入力補完を追加する -
コマンドレットの
Format-*
パラメーターのタブ補完を追加する - クラスベースの引数補完のサポートを追加する
PowerShell 7.3 の
-
ValidateScriptAttribute
に指定したスクリプトブロックでタブ補完を修正する。 -
break
とcontinue
の後のループラベルに対してタブ補完を追加しました - 複数のシナリオでハッシュテーブルの完了を改善する
- パラメーターのスプラッティング
-
引数パラメーター
Invoke-CimMethod
-
FilterHashtable パラメーター
Get-WinEvent
- CIM コマンドレットのプロパティ パラメーター
- メンバー完了シナリオから重複を削除します
- ネットワーク共有 (UNC パス) の完了でのスラッシュのサポート
- メンバーのオートコンプリートを改善する
-
ValidateSet
の完了項目をパラメーターの列挙型より優先する - 型パラメーターを使用したジェネリック メソッドの型推論のサポートを追加する
- 型の推論と補完を改善する
- の完了結果にメソッドを表示できるようにします。
ForEach-Object -MemberName
-
void のように (
[void]("")
) を返す式の完了が行われないようにします。 - クラス補完が AST に基づいているときに、既定以外のクラス コンストラクターを表示できるようにします
- の完了結果にメソッドを表示できるようにします。
コマンド パラメーターのタブ補完を強化するその他の方法
組み込みのタブ展開は、内部関数 TabExpansion または TabExpansion2 によって制御されます。 これらの関数の既定の動作を置き換える関数またはモジュールを作成できます。 PowerShell ギャラリーで TabExpansion キーワードを検索すると、例を見つけることができます。
パラメーターで ValidateSet
属性または ArgumentCompletions
属性を使用する
ArgumentCompletions
属性を使用すると、タブ補完値を特定のパラメーターに追加できます。
ArgumentCompletions
属性は、ValidateSet
に似ています。 どちらの属性も、ユーザーがパラメーター名の後に Tab キーを押したときに表示される値の一覧を受け取ります。 ただし、 ValidateSet
とは異なり、値は検証されません。
詳細については、以下を参照してください。
パラメーターで ArgumentCompleter
属性または Register-ArgumentCompleter
を使用する
引数補完は、パラメーター値に対して動的なタブ補完を提供するスクリプトブロックまたは関数です。
ArgumentCompleter
属性を使用すると、パラメーターのタブ補完値を提供する関数を登録できます。 引数 completer 関数は、 ArgumentCompleter
属性を持つパラメーターを含む関数で使用できる必要があります。 通常、関数は同じスクリプトまたはモジュールで定義されます。
詳細については、「 ArgumentCompleter」を参照してください。
Register-ArgumentCompleter
コマンドレットは、指定した任意のコマンドについて、実行時にスクリプト ブロックを引数 completer 関数として登録します。 これにより、スクリプトまたはモジュールの外部またはネイティブ コマンドの引数の完了子を定義できます。 詳細については、「register-ArgumentCompleter を参照してください。
PSReadLineの予測機能IntelliSense
PSReadLine 2.1.0 では 予測 IntelliSense 機能が導入されました。 予測機能付きの IntelliSense は、PSReadLine 履歴の項目に基づいて、コマンド全体を提案します。
PSReadLine 2.2.2 は、高度なロジックを使用して完全なコマンドの提案を提供するプラグイン モジュールのサポートを追加することで、予測 IntelliSense の機能を拡張します。 Az.Tools.Predictive モジュールは、予測 IntelliSense の最初のプラグインでした。 Machine Learning を使用して、実行する Azure PowerShell コマンドと使用するパラメーターを予測します。
詳細については、「 予測変数の使用」を参照してください。
PowerShell