Menggunakan penyelesaian tab di shell

PowerShell menyediakan penyelesaian input untuk memberikan petunjuk, mengaktifkan penemuan, dan mempercepat entri input. Nama perintah, nama parameter, nilai argumen, dan jalur file semuanya dapat diselesaikan dengan menekan tombol Tab .

Tombol Tab adalah pengikatan kunci default pada Windows. PSReadLine juga menyediakan MenuComplete fungsi yang terikat ke Ctrl+Space. Fungsi ini MenuComplete menampilkan daftar penyelesaian yang cocok di bawah baris perintah.

Keybinding ini dapat diubah menggunakan cmdlet PSReadLine atau aplikasi yang menghosting PowerShell. Keybinding dapat berbeda pada platform non-Windows. Untuk informasi selengkapnya, lihat about_PSReadLine_Functions.

Fitur penyelesaian tab bawaan

PowerShell telah mengaktifkan penyelesaian tab untuk banyak aspek pengalaman baris perintah.

Penyelesaian nama file

Untuk mengisi nama file atau jalur dari pilihan yang tersedia secara otomatis, ketik bagian dari nama dan tekan tombol Tab . PowerShell secara otomatis memperluas nama ke kecocokan pertama yang ditemukannya. Menekan tombol Tab lagi menelusuri semua pilihan yang tersedia dengan setiap penekanan tombol.

Penyelesaian nama perintah dan parameter

Perluasan tab nama cmdlet sedikit berbeda. Untuk menggunakan ekspansi tab pada nama cmdlet, ketik seluruh bagian pertama nama (kata kerja) dan tanda hubung yang mengikutinya. Anda dapat mengisi lebih banyak nama untuk kecocokan parsial. Misalnya, jika Anda mengetik get-co lalu menekan tombol Tab , PowerShell secara otomatis memperluas ini ke Get-Command cmdlet (perhatikan bahwa itu juga mengubah huruf ke bentuk standarnya). Jika Anda menekan tombol Tab lagi, PowerShell mengganti ini dengan satu-satunya nama cmdlet lain yang cocok, Get-Content. Penyelesaian tab juga berfungsi untuk mengatasi alias PowerShell dan executable asli.

Grafik berikut menunjukkan contoh penyelesaian tab dan menu.

Contoh penyelesaian tab dan menu

Penyelesaian tab lainnya

Setiap versi baru PowerShell mencakup penyempurnaan penyelesaian tab yang memperbaiki bug dan meningkatkan kegunaan.

PowerShell 7.0

  • Penyelesaian tab menyelesaikan penetapan variabel yang merupakan enum atau jenis dibatasi
  • Penyelesaian tab memperluas cmdlet dan fungsi yang disingkat. Misalnya, i-psdf<tab> mengembalikan Import-PowerShellDataFile

PowerShell 7.2

  • Memperbaiki penyelesaian tab untuk topik yang tidak dilokalkan about*
  • Memperbaiki splatting yang diperlakukan sebagai parameter posisi dalam penyelesaian
  • Menambahkan penyelesaian untuk kata kunci Bantuan berbasis Komentar
  • Menambahkan penyelesaian untuk #requires pernyataan
  • Menambahkan penyelesaian tab untuk Melihat parameter Format-* cmdlet
  • Menambahkan dukungan untuk penyelesaian argumen berbasis kelas

PowerShell 7.3

  • Memperbaiki penyelesaian tab dalam blok skrip yang ditentukan untuk ValidateScriptAttribute
  • Menambahkan penyelesaian tab untuk label perulangan setelah break dan continue
  • Meningkatkan penyelesaian Hashtable dalam beberapa skenario
    • Percikan parameter
    • Parameter argumen untuk Invoke-CimMethod
    • Parameter FilterHashtable untuk Get-WinEvent
    • Parameter properti untuk cmdlet CIM
    • Menghapus duplikat dari skenario penyelesaian anggota
  • Mendukung penerusan garis miring dalam penyelesaian berbagi jaringan (jalur UNC)
  • Meningkatkan penyelesaian otomatis anggota
  • Memprioritaskan ValidateSet penyelesaian daripada enum untuk parameter
  • Menambahkan dukungan inferensi jenis untuk metode generik dengan parameter jenis
  • Meningkatkan inferensi dan penyelesaian jenis
    • Memungkinkan metode ditampilkan dalam hasil penyelesaian untuk ForEach-Object -MemberName
    • Mencegah penyelesaian pada ekspresi yang mengembalikan kekosongan seperti ([void](""))
    • Memungkinkan konstruktor Kelas non-default muncul ketika penyelesaian kelas didasarkan pada AST

Cara lain untuk meningkatkan penyelesaian tab parameter perintah

Ekspansi tab bawaan dikontrol oleh fungsi internal TabExpansion atau TabExpansion2. Anda dapat membuat fungsi atau modul yang menggantikan perilaku default fungsi-fungsi ini. Anda dapat menemukan contoh di Galeri PowerShell dengan mencari kata kunci TabExpansion .

ValidateSet Menggunakan atribut atau ArgumentCompletions dengan parameter

Atribut ini ArgumentCompletions memungkinkan Anda menambahkan nilai penyelesaian tab ke parameter tertentu. Atribut ArgumentCompletions ini mirip ValidateSetdengan . Kedua atribut mengambil daftar nilai yang akan disajikan saat pengguna menekan Tab setelah nama parameter. Namun, tidak seperti ValidateSet, nilai tidak divalidasi.

Untuk informasi selengkapnya, lihat:

ArgumentCompleter Menggunakan atribut atau Register-ArgumentCompleter dengan parameter

Pelengkap argumen adalah blok skrip atau fungsi yang menyediakan penyelesaian tab dinamis untuk nilai parameter.

Atribut ini ArgumentCompleter memungkinkan Anda mendaftarkan fungsi yang menyediakan nilai penyelesaian tab untuk parameter . Fungsi penyelesaian argumen harus tersedia untuk fungsi yang berisi parameter dengan ArgumentCompleter atribut . Biasanya, fungsi didefinisikan dalam skrip atau modul yang sama.

Untuk informasi selengkapnya, lihat ArgumentCompleter.

Register-ArgumentCompleter Cmdlet mendaftarkan blok skrip sebagai fungsi penyelesaian argumen pada waktu proses untuk perintah apa pun yang Anda tentukan. Ini memungkinkan Anda menentukan pengisi argumen di luar skrip atau modul atau untuk perintah asli. Untuk informasi selengkapnya, lihat Register-ArgumentCompleter.

IntelliSense Prediktif di PSReadLine

PSReadLine 2.1.0 memperkenalkan fitur Predictive IntelliSense . Predictive IntelliSense memberikan saran untuk perintah lengkap berdasarkan item dari riwayat PSReadLine Anda.

PSReadLine 2.2.2 memperluas kekuatan Predictive IntelliSense dengan menambahkan dukungan untuk modul plug-in yang menggunakan logika tingkat lanjut untuk memberikan saran untuk perintah lengkap. Modul Az.Tools.Predictor adalah plug-in pertama untuk Predictive IntelliSense. Ini menggunakan Pembelajaran Mesin untuk memprediksi perintah Azure PowerShell apa yang ingin Anda jalankan dan parameter yang ingin Anda gunakan.

Untuk informasi selengkapnya, lihat Menggunakan prediktor.