about_Functions_Advanced

Kısa açıklama

Betikleri kullanarak cmdlet oluşturmanın bir yolu olan gelişmiş işlevleri tanıtır.

Uzun açıklama

Cmdlet, PowerShell'in işlem hattı semantiğine katılan tek bir komutdur. Buna ikili cmdlet'ler, gelişmiş betik işlevleri, CDXML ve İş Akışları dahildir.

Gelişmiş işlevler, PowerShell işlevi olarak yazılan cmdlet'ler oluşturmanıza olanak tanır. Gelişmiş işlevler, ikili bir cmdlet yazmak ve derlemek zorunda kalmadan cmdlet oluşturmayı kolaylaştırır. İkili cmdlet'ler, C# gibi bir .NET dilinde yazılan .NET sınıflarıdır.

Gelişmiş işlevler, cmdlet'ler gibi davranan işlevler olarak tanımlamak için özniteliğini kullanır CmdletBinding . CmdletBinding özniteliği, sınıfı bir cmdlet olarak tanımlamak için derlenmiş cmdlet sınıflarında kullanılan Cmdlet özniteliğine benzer. Bu öznitelik hakkında daha fazla bilgi için bkz. about_Functions_CmdletBindingAttribute.

Aşağıdaki örnekte, bir adı kabul eden ve sağlanan adı kullanarak bir karşılama yazdıran bir işlev gösterilmektedir. Ayrıca bu işlevin derlenmiş cmdlet'in fiil-isim çifti gibi bir fiil (Gönder) ve isim (Selamlama) çifti içeren bir ad tanımladığını da fark edin. Ancak işlevlerin fiil-isim adına sahip olması gerekmez.

function Send-Greeting
{
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$true)]
        [string] $Name
    )

    Process
    {
        Write-Host ("Hello " + $Name + "!")
    }
}

işlevinin parametreleri özniteliği kullanılarak Parameter bildirilir. Bu öznitelik tek başına kullanılabilir veya Alias özniteliğiyle veya diğer birkaç parametre doğrulama özniteliğiyle birleştirilebilir. Parametreleri bildirme hakkında daha fazla bilgi için (çalışma zamanında eklenen dinamik parametreler dahil), bkz. about_Functions_Advanced_Parameters.

Önceki işlevin fiili çalışması, cmdlet'e process geçirilen verileri işlemek için derlenmiş cmdlet'ler tarafından kullanılan ProcessingRecord yöntemine eşdeğer olan blokta gerçekleştirilir. Bu blok ve end bloklarıyla begin birlikte about_Functions_Advanced_Methods konu başlığında açıklanmıştır.

Gelişmiş işlevler, aşağıdaki yollarla derlenmiş cmdlet'lerden farklıdır:

  • Bir dize dizisi bir Boole parametresine bağlı olduğunda gelişmiş işlev parametresi bağlaması özel durum oluşturmaz.
  • ValidateSet özniteliği ve ValidatePattern özniteliği adlandırılmış parametreleri geçiremez.
  • Gelişmiş işlevler işlemlerde kullanılamaz.

Ayrıca bkz.