次の方法で共有


TabExpansion2

PowerShell スクリプトのタブ補完を提供するために、CommandCompletion クラスのCompleteInput() メソッドをラップするヘルパー関数。

構文

TabExpansion2
   [-inputScript] <String>
   [[-cursorColumn] <Int32>]
   [[-options] <Hashtable>]
   [<CommonParameters>]
TabExpansion2
   [-ast] <Ast>
   [-tokens] <Token[]>
   [-positionOfCursor] <IScriptPosition>
   [[-options] <Hashtable>]
   [<CommonParameters>]

説明

TabExpansion2 は、ユーザー入力のタブ補完を提供する組み込み関数です。 PowerShell は、ユーザーがコマンドの入力中に Tab キーまたは Ctrl+Space キーを押すと、この関数を呼び出します。 この関数は、現在の入力で可能な入力候補の一覧を返します。

TabExpansion2 は通常、ユーザーが直接呼び出すわけではありません。 ただし、タブ補完のテストに役立ちます。 TabExpansion2を使用するには、現在の入力スクリプトとスクリプト内のカーソル位置を指定する必要があります。 この関数は CommandCompletion オブジェクトを返します。このオブジェクトには、現在の入力に対して可能な入力候補の一覧が含まれています。 この入力スクリプトには、スクリプトを表す文字列または抽象構文ツリー (AST) を指定できます。

PowerShell セッションで同じ名前のカスタム関数を定義することで、 TabExpansion2 の既定の動作をオーバーライドできます。 このカスタム関数は、カスタム コマンドまたはパラメーターの入力候補を提供できます。 TabExpansion2をオーバーライドすることは可能ですが、サポートされていません。 タブ補完動作をカスタマイズする必要がある場合にのみ、カスタム関数を作成する必要があります。

例 1 - コマンド パラメーターのタブ補完を取得する

この例では、PowerShell コマンド プロンプトに「 Format-Hex -<Tab> 」と入力すると得られるのと同じ結果が表示されます。 TabExpansion2関数は、- トークンの入力候補の一覧を含むCommandCompletion オブジェクトを返します。

TabExpansion2 -inputScript ($s = 'Format-Hex -') -cursorColumn $s.Length |
    Select-Object -ExpandProperty CompletionMatches

CompletionText ListItemText    ResultType ToolTip
-------------- ------------    ---------- -------
-Path          Path         ParameterName [string[]] Path
-LiteralPath   LiteralPath  ParameterName [string[]] LiteralPath
-InputObject   InputObject  ParameterName [psobject] InputObject
-Encoding      Encoding     ParameterName [Encoding] Encoding
-Count         Count        ParameterName [long] Count
-Offset        Offset       ParameterName [long] Offset

例 2 - パラメーター値のタブ補完を取得する

この例では、パラメーター値のタブ補完を取得する方法を示します。 この例では、 Stage パラメーターには 3 つの可能な値があり、値の 1 つが Threeされることを想定しています。 この手法を使用して、関数のタブ補完によって期待される結果が返されることをテストできます。

function GetData {
    param (
        [ValidateSet('One', 'Two', 'Three')]
        [string]$Stage
    )
    Write-Verbose "Retrieving data for stage $Stage"
}

$result = TabExpansion2 -inputScript ($line = 'GetData -Stage ') -cursorColumn $line.Length |
    Select-Object -ExpandProperty CompletionMatches
$result.Count -eq 3
$result.CompletionText -contains 'Three'

True
True

パラメーター

-ast

タブ補完を使用して展開するスクリプトを表す抽象構文ツリー (AST) オブジェクト。

型:Ast
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-cursorColumn

入力スクリプト文字列内のカーソルの列番号。 カーソル位置は、タブ補完によって展開されるトークンを決定するために使用されます。

型:Int32
配置:1
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-inputScript

タブ補完を使用して展開するスクリプトを表す文字列。

型:String
配置:0
規定値:None
必須:True
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-options

CompleteInput() API に渡すオプション値のハッシュテーブル。 API は、次のブール値オプションを受け入れます。

  • IgnoreHiddenShares - $trueに設定すると、 \\COMPUTER\ADMIN$\\COMPUTER\C$などの非表示の UNC 共有は無視されます。 既定では、PowerShell には非表示の共有が含まれています。
  • RelativePaths - 既定では、指定した入力に基づいてパスを展開する方法が PowerShell によって決定されます。 この値を $true に設定すると、PowerShell はパスを相対パスに置き換える必要があります。 この値を $false に設定すると、PowerShell で絶対パスに置き換えられます。
  • LiteralPaths - 既定では、PowerShell は角かっこやバックティックなどの特殊なファイル文字を、エスケープされた同等の文字に置き換えます。 この値を $true に設定すると、置換できなくなります。
型:Hashtable
配置:3
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-positionOfCursor

入力 AST 内のカーソルの列番号。 カーソル位置は、タブ補完によって展開されるトークンを決定するために使用されます。

型:IScriptPosition
配置:2
規定値:None
必須:True
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-tokens

入力スクリプトから解析されたトークンの配列。 トークンは、タブ補完によって展開されるトークンを決定するために使用されます。

型:Token[]
配置:1
規定値:None
必須:True
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

None

出力

CommandCompletion