Delen via


about_Functions_Advanced

Korte beschrijving

Introduceert geavanceerde functies die een manier zijn om cmdlets te maken met behulp van scripts.

Lange beschrijving

Een cmdlet is één opdracht die deelneemt aan de pijplijnsemantiek van PowerShell. Dit omvat binaire cmdlets, PowerShell-geavanceerde functies en CDXML-cmdlets.

Met geavanceerde functies kunt u cmdlets maken die zijn geschreven als een PowerShell-functie. Met geavanceerde functies kunt u eenvoudiger cmdlets maken zonder dat u een binaire cmdlet hoeft te schrijven en compileren. Binaire cmdlets zijn .NET-klassen die zijn geschreven in een .NET-taal zoals C#.

Geavanceerde functies gebruiken het CmdletBinding kenmerk om ze te identificeren als functies die fungeren als cmdlets. Het CmdletBinding kenmerk is vergelijkbaar met het cmdlet-kenmerk dat wordt gebruikt in gecompileerde cmdlet-klassen om de klasse te identificeren als een cmdlet. Zie about_Functions_CmdletBindingAttribute voor meer informatie over dit kenmerk.

De parameters van de functie zijn variabelen die zijn gedeclareerd in de instructie param(). U kunt het optionele [Parameter()] kenmerk alleen of in combinatie met het [Alias()] kenmerk of een van de parametervalidatiekenmerken gebruiken. Zie about_Functions_Advanced_Parametersvoor meer informatie over het declareren van parameters.

In het volgende voorbeeld ziet u een functie die een naam accepteert en vervolgens een begroeting afdrukt met behulp van de opgegeven naam. U ziet ook dat deze functie een naam definieert die een werkwoord (Send) en een zelfstandig naamwoordpaar (Begroeting) bevat, zoals het werkwoord-zelfstandig naamwoordpaar van een gecompileerde cmdlet. Functies zijn echter niet vereist om een naamwoord-zelfstandig naamwoord te hebben.

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

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

Met deze functie wordt het werk uitgevoerd in het process blok, wat gelijk is aan de methode ProcessingRecord die wordt gebruikt in gecompileerde cmdlets. Het process blok en de andere benoemde blokken worden beschreven in about_Functions_Advanced_Methods.

Geavanceerde functies verschillen van gecompileerde cmdlets op de volgende manieren:

  • Geavanceerde functieparameterbinding genereert geen uitzondering wanneer een matrix met tekenreeksen is gebonden aan een Booleaanse parameter.
  • Het ValidateSet kenmerk en het ValidatePattern kenmerk kunnen geen benoemde parameters doorgeven.
  • Geavanceerde functies kunnen niet worden gebruikt in transacties.

Zie ook