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, geavanceerde scriptfuncties, CDXML en Werkstromen.

Met geavanceerde functies kunt u cmdlets maken die zijn geschreven als een PowerShell-functie. Geavanceerde functies maken het eenvoudiger om cmdlets te maken zonder dat u een binaire cmdlet moet 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 kenmerk is vergelijkbaar met het kenmerk Cmdlet dat wordt gebruikt in gecompileerde cmdlet-klassen om de klasse te identificeren CmdletBinding als een cmdlet. Zie voor meer informatie over dit kenmerk about_Functions_CmdletBindingAttribute.

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 werkwoordpaar (Send) en een zelfstandig naamwoord (Greeting) 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 + "!")
    }
}

De parameters van de functie worden gedeclareerd met behulp van het kenmerk Parameter. Dit kenmerk kan alleen worden gebruikt of kan worden gecombineerd met het kenmerk Alias of met verschillende andere parametervalidatiekenmerken. Zie voor meer informatie over het declareeren van parameters (inclusief dynamische parameters die tijdens runtime worden toegevoegd) about_Functions_Advanced_Parameters.

Het werkelijke werk van de vorige functie wordt uitgevoerd in het blok Proces, dat gelijk is aan de ProcessingRecord-methode die wordt gebruikt door gecompileerde cmdlets voor het verwerken van de gegevens die worden doorgegeven aan de cmdlet. Dit blok wordt samen met de blokken Begin en End beschreven in about_Functions_Advanced_Methods onderwerp.

Geavanceerde functies verschillen op de volgende manieren van gecompileerde cmdlets:

  • De binding voor geavanceerde functieparameters geeft geen uitzondering wanneer een matrix met tekenreeksen is gebonden aan een Booleaanse parameter.
  • Het kenmerk ValidateSet en het kenmerk ValidatePattern kunnen geen benoemde parameters doorgeven.
  • Geavanceerde functies kunnen niet worden gebruikt in transacties.

Zie ook

about_Functions

about_Functions_Advanced_Methods

about_Functions_Advanced_Parameters

about_Functions_CmdletBindingAttribute

about_Functions_OutputTypeAttribute