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 skrip tingkat lanjut, CDXML, dan Alur Kerja.

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.

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 + "!")
    }
}

Parameter fungsi dinyatakan menggunakan Parameter atribut . Atribut ini dapat digunakan sendiri, atau dapat dikombinasikan dengan atribut Alias atau dengan beberapa atribut validasi parameter lainnya. Untuk informasi selengkapnya tentang cara mendeklarasikan parameter (termasuk parameter dinamis yang ditambahkan saat runtime), lihat about_Functions_Advanced_Parameters.

Pekerjaan aktual dari fungsi sebelumnya dilakukan di process blok, yang setara dengan metode ProcessingRecord yang digunakan oleh cmdlet yang dikompilasi untuk memproses data yang diteruskan ke cmdlet. Blok ini, bersama dengan begin blok dan end , dijelaskan dalam topik 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