about_Functions_Advanced
Deskripsi singkat
Memperkenalkan fungsi tingkat lanjut yang merupakan cara untuk membuat cmdlet menggunakan skrip.
Deskripsi panjang
Cmdlet adalah satu perintah yang berpartisipasi dalam semantik alur PowerShell. Ini termasuk cmdlet biner, fungsi lanjutan PowerShell, dan cmdlet CDXML.
Fungsi tingkat lanjut memungkinkan Anda membuat cmdlet yang ditulis sebagai fungsi PowerShell. Fungsi tingkat lanjut memudahkan untuk membuat cmdlet tanpa harus menulis dan mengkompilasi cmdlet biner. Cmdlet biner adalah kelas .NET yang ditulis dalam bahasa .NET seperti C#.
Fungsi tingkat lanjut menggunakan CmdletBinding
atribut untuk mengidentifikasinya sebagai fungsi yang bertindak seperti cmdlet. Atribut CmdletBinding
ini mirip dengan atribut Cmdlet yang digunakan dalam kelas cmdlet yang dikompilasi untuk mengidentifikasi kelas sebagai cmdlet. Untuk informasi selengkapnya tentang atribut ini, lihat about_Functions_CmdletBindingAttribute.
Parameter fungsi adalah variabel yang dideklarasikan dalam pernyataan param()
. Anda dapat menggunakan atribut [Parameter()]
opsional saja atau dalam kombinasi dengan atribut [Alias()]
atau atribut validasi parameter apa pun. Untuk informasi selengkapnya tentang cara mendeklarasikan parameter, lihat about_Functions_Advanced_Parameters.
Contoh berikut menunjukkan fungsi yang menerima nama lalu mencetak salam menggunakan nama yang disediakan. Perhatikan juga bahwa fungsi ini mendefinisikan nama yang menyertakan pasangan kata kerja (Kirim) dan kata benda (Salam) seperti pasangan kata kerja cmdlet yang dikompilasi. Namun, fungsi tidak diperlukan untuk memiliki nama kata kerja.
function Send-Greeting
{
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[string]$Name
)
process
{
Write-Host ("Hello " + $Name + "!")
}
}
Fungsi ini melakukan pekerjaan di blok process
, yang setara dengan metode ProcessingRecord yang digunakan dalam cmdlet yang dikompilasi. Blok process
dan blok bernama lainnya dijelaskan dalam about_Functions_Advanced_Methods.
Fungsi tingkat lanjut berbeda dari cmdlet yang dikompilasi dengan cara berikut:
- Pengikatan parameter fungsi tingkat lanjut tidak melemparkan pengecualian ketika array string terikat ke parameter Boolean .
- Atribut
ValidateSet
danValidatePattern
atribut tidak dapat meneruskan parameter bernama. - Fungsi tingkat lanjut tidak dapat digunakan dalam transaksi.