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. 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.
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 + "!")
}
}
De parameters van de functie worden gedeclareerd met behulp van het Parameter
kenmerk.
Dit kenmerk kan alleen worden gebruikt of kan worden gecombineerd met het aliaskenmerk of met verschillende andere parametervalidatiekenmerken. Zie about_Functions_Advanced_Parameters voor meer informatie over het declareren van parameters (inclusief dynamische parameters die tijdens runtime worden toegevoegd).
Het werkelijke werk van de vorige functie wordt uitgevoerd in het process
blok, wat gelijk is aan de methode ProcessingRecord die wordt gebruikt door gecompileerde cmdlets om de gegevens te verwerken die worden doorgegeven aan de cmdlet. Dit blok, samen met de begin
blokken end
, wordt beschreven in het about_Functions_Advanced_Methods onderwerp.
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 hetValidatePattern
kenmerk kunnen geen benoemde parameters doorgeven. - Geavanceerde functies kunnen niet worden gebruikt in transacties.