about_Functions_Advanced
Kort beskrivning
Introducerar avancerade funktioner som är ett sätt att skapa cmdlets med hjälp av skript.
Lång beskrivning
En cmdlet är ett enda kommando som deltar i pipelinesemantiken i PowerShell. Detta inkluderar binära cmdlets, avancerade skriptfunktioner, CDXML och arbetsflöden.
Med avancerade funktioner kan du skapa cmdlets som skrivs som en PowerShell-funktion. Avancerade funktioner gör det enklare att skapa cmdlets utan att behöva skriva och kompilera en binär cmdlet. Binära cmdlets är .NET-klasser som är skrivna på ett .NET-språk, till exempel C#.
Avancerade funktioner använder CmdletBinding attributet för att identifiera dem som funktioner som fungerar som cmdlets. Attributet CmdletBinding liknar cmdlet-attributet som används i kompilerade cmdlet-klasser för att identifiera klassen som en cmdlet. Mer information om det här attributet finns i about_Functions_CmdletBindingAttribute.
I följande exempel visas en funktion som accepterar ett namn och sedan skriver ut en hälsning med det angivna namnet. Observera också att den här funktionen definierar ett namn som innehåller ett verbpar (Skicka) och substantivpar (Greeting) som verb-substantivparet i en kompilerad cmdlet. Funktioner behöver dock inte ha ett verb-substantivnamn.
function Send-Greeting
{
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string] $Name
)
Process
{
Write-Host ("Hello " + $Name + "!")
}
}
Parametrarna för funktionen deklareras med hjälp av attributet Parameter. Det här attributet kan användas ensamt, eller kombineras med aliasattributet eller med flera andra parametervalideringsattribut. Mer information om hur du deklarerar parametrar (inklusive dynamiska parametrar som läggs till vid körning) finns i about_Functions_Advanced_Parameters.
Det faktiska arbetet i den tidigare funktionen utförs i processblocket, vilket motsvarar metoden ProcessingRecord som används av kompilerade cmdlets för att bearbeta de data som skickas till cmdleten. Det här blocket, tillsammans med start- och slutblocken, beskrivs i about_Functions_Advanced_Methods avsnitt.
Avancerade funktioner skiljer sig från kompilerade cmdlets på följande sätt:
- Avancerad funktionsparameterbindning returnerar inget undantag när en matris med strängar är bunden till en boolesk parameter.
- Attributet ValidateSet och attributet ValidatePattern kan inte skicka namngivna parametrar.
- Avancerade funktioner kan inte användas i transaktioner.
Se även
about_Functions_Advanced_Methods
about_Functions_Advanced_Parameters