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 komuttır. Buna ikili cmdlet'ler, gelişmiş betik işlevleri, CDXML ve İş Akışları dahildir.

Gelişmiş işlevler, PowerShell işlevi olarak yazılmış 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ılmış .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 ardından sağlanan adı kullanarak bir selamlama 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 gerçek ç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. Ve bloklarıyla beginend birlikte bu blok, about_Functions_Advanced_Methods konu başlığında açıklanmıştır.

Gelişmiş işlevler, derlenmiş cmdlet'lerden aşağıdaki yollarla 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.