Bagikan melalui


TabExpansion2

Fungsi pembantu yang membungkus CompleteInput() metode kelas CommandCompletion untuk menyediakan penyelesaian tab untuk skrip PowerShell.

Sintaks

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

Deskripsi

TabExpansion2 adalah fungsi bawaan yang menyediakan penyelesaian tab untuk input pengguna. PowerShell memanggil fungsi ini saat pengguna menekan tombol Spasi Tab atau Ctrl+ saat mengetik perintah. Fungsi mengembalikan daftar kemungkinan penyelesaian untuk input saat ini.

TabExpansion2 biasanya tidak dipanggil langsung oleh pengguna. Namun, ini dapat berguna untuk menguji penyelesaian tab. Untuk menggunakan TabExpansion2, Anda perlu menyediakan skrip input saat ini dan posisi kursor dalam skrip. Fungsi mengembalikan objek CommandCompletion yang berisi daftar kemungkinan penyelesaian untuk input saat ini. Skrip input ini dapat berupa string atau pohon sintaks abstrak (AST) yang mewakili skrip.

Anda dapat mengambil alih perilaku TabExpansion2 default dengan menentukan fungsi kustom dengan nama yang sama di sesi PowerShell Anda. Fungsi kustom ini dapat menyediakan penyelesaian untuk perintah atau parameter kustom. Meskipun dimungkinkan untuk mengambil alih TabExpansion2, itu tidak didukung. Anda harus membuat fungsi kustom hanya jika Anda memiliki kebutuhan khusus untuk menyesuaikan perilaku penyelesaian tab.

Contoh

Contoh 1 - Dapatkan penyelesaian tab untuk parameter perintah

Contoh ini memperlihatkan hasil yang sama yang akan Anda dapatkan dengan memasukkan Format-Hex -<Tab> di prompt perintah PowerShell. Fungsi mengembalikan TabExpansion2objek CommandCompletion yang berisi daftar kemungkinan penyelesaian untuk - token.

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 [Object] InputObject
-Encoding            Encoding            ParameterName [string] Encoding
-Raw                 Raw                 ParameterName [switch] Raw
-Verbose             Verbose             ParameterName [switch] Verbose
-Debug               Debug               ParameterName [switch] Debug
-ErrorAction         ErrorAction         ParameterName [ActionPreference] ErrorAction
-WarningAction       WarningAction       ParameterName [ActionPreference] WarningAction
-InformationAction   InformationAction   ParameterName [ActionPreference] InformationAction
-ErrorVariable       ErrorVariable       ParameterName [string] ErrorVariable
-WarningVariable     WarningVariable     ParameterName [string] WarningVariable
-InformationVariable InformationVariable ParameterName [string] InformationVariable
-OutVariable         OutVariable         ParameterName [string] OutVariable
-OutBuffer           OutBuffer           ParameterName [int] OutBuffer
-PipelineVariable    PipelineVariable    ParameterName [string] PipelineVariable

Contoh 2 - Dapatkan penyelesaian tab untuk nilai parameter

Contoh ini menunjukkan cara mendapatkan penyelesaian tab untuk nilai parameter. Dalam contoh ini, kami mengharapkan bahwa parameter Tahap memiliki tiga nilai yang mungkin dan bahwa salah satu nilainya adalah Three. Anda dapat menggunakan teknik ini untuk menguji penyelesaian tab untuk fungsi Anda mengembalikan hasil yang diharapkan.

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

Parameter

-ast

Objek pohon sintaks abstrak (AST) yang mewakili skrip yang ingin Anda perluas menggunakan penyelesaian tab.

Jenis:Ast
Position:0
nilai default:None
Diperlukan:True
Accept pipeline input:False
Accept wildcard characters:False

-cursorColumn

Nomor kolom kursor dalam string skrip input. Posisi kursor digunakan untuk menentukan token yang akan diperluas berdasarkan penyelesaian tab.

Jenis:Int32
Position:1
nilai default:None
Diperlukan:False
Accept pipeline input:False
Accept wildcard characters:False

-inputScript

String yang mewakili skrip yang ingin Anda perluas menggunakan penyelesaian tab.

Jenis:String
Position:0
nilai default:None
Diperlukan:True
Accept pipeline input:False
Accept wildcard characters:False

-options

Hashtable nilai opsi untuk diteruskan ke CompleteInput() API. API menerima opsi boolean berikut:

  • IgnoreHiddenShares - Ketika diatur ke $true, abaikan berbagi UNC tersembunyi seperti \\COMPUTER\ADMIN$ dan \\COMPUTER\C$. Secara default, PowerShell menyertakan berbagi tersembunyi.
  • RelativePaths - Secara default, PowerShell memutuskan cara memperluas jalur berdasarkan input yang Anda berikan. Mengatur nilai ini untuk $true memaksa PowerShell mengganti jalur dengan jalur relatif. Mengatur nilai ini ke $false, memaksa PowerShell untuk menggantinya dengan jalur absolut.
  • LiteralPaths - Secara default, PowerShell mengganti karakter file khusus, seperti tanda kurung siku dan tanda centang belakang, dengan yang setara dengan yang diloloskan. Mengatur nilai ini untuk $true mencegah penggantian.
Jenis:Hashtable
Position:3
nilai default:None
Diperlukan:False
Accept pipeline input:False
Accept wildcard characters:False

-positionOfCursor

Nomor kolom kursor dalam AST input. Posisi kursor digunakan untuk menentukan token yang akan diperluas berdasarkan penyelesaian tab.

Jenis:IScriptPosition
Position:2
nilai default:None
Diperlukan:True
Accept pipeline input:False
Accept wildcard characters:False

-tokens

Array token yang diurai dari skrip input. Token digunakan untuk menentukan token yang akan diperluas berdasarkan penyelesaian tab.

Jenis:Token[]
Position:1
nilai default:None
Diperlukan:True
Accept pipeline input:False
Accept wildcard characters:False

Input

None

Output

CommandCompletion