Aracılığıyla paylaş


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, PowerShell gelişmiş işlevleri ve CDXML cmdlet'leri 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.

İşlevin parametreleri, param() deyiminde bildirilen değişkenlerdir. İsteğe bağlı [Parameter()] özniteliğini tek başına veya [Alias()] özniteliği veya parametre doğrulama özniteliklerinden herhangi biriyle birlikte kullanabilirsiniz. Parametreleri bildirme hakkında daha fazla bilgi için bkz. about_Functions_Advanced_Parameters.

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

Bu işlev, derleme cmdlet'lerinde kullanılan process yöntemine eşdeğer olan bloğunda çalışmayı gerçekleştirir. process bloğu ve diğer adlandırılmış bloklar about_Functions_Advanced_Methodsiçinde 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.