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 TabExpansion2 objek 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 [psobject] InputObject
-Encoding      Encoding     ParameterName [Encoding] Encoding
-Count         Count        ParameterName [long] Count
-Offset        Offset       ParameterName [long] Offset

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
Terima input alur:False
Terima karakter wildcard: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
Terima input alur:False
Terima karakter wildcard:False

-inputScript

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

Jenis:String
Position:0
Nilai default:None
Diperlukan:True
Terima input alur:False
Terima karakter wildcard: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
Terima input alur:False
Terima karakter wildcard: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
Terima input alur:False
Terima karakter wildcard: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
Terima input alur:False
Terima karakter wildcard:False

Input

None

Output

CommandCompletion