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.
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>
mengembalikanImport-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
dancontinue
- 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
- Memungkinkan metode ditampilkan dalam hasil penyelesaian untuk
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 ValidateSet
dengan . 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.