Bagikan melalui


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 dan ValidatePattern atribut tidak dapat meneruskan parameter bernama.
  • Fungsi tingkat lanjut tidak dapat digunakan dalam transaksi.

Lihat juga