Sdílet prostřednictvím


about_Functions_Advanced

Krátký popis

Představuje pokročilé funkce, které představují způsob, jak vytvářet rutiny pomocí skriptů.

Dlouhý popis

Rutina je jeden příkaz, který se účastní sémantiky kanálu PowerShellu. To zahrnuje binární rutiny, pokročilé skriptovací funkce, CDXML a Pracovní postupy.

Pokročilé funkce umožňují vytvářet rutiny, které jsou napsané jako funkce PowerShellu. Pokročilé funkce usnadňují vytváření rutin bez nutnosti psát a kompilovat binární rutinu. Binární rutiny jsou třídy .NET napsané v jazyce .NET, jako je C#.

Pokročilé funkce používají CmdletBinding atribut k jejich identifikaci jako funkce, které fungují jako rutiny. Atribut CmdletBinding je podobný atributu rutiny, který se používá ve zkompilovaných třídách rutin k identifikaci třídy jako rutiny. Další informace o tomto atributu najdete v tématu about_Functions_CmdletBindingAttribute.

Následující příklad ukazuje funkci, která přijímá název a pak vytiskne pozdrav pomocí zadaného názvu. Všimněte si také, že tato funkce definuje název, který obsahuje dvojici sloves (Send) a jmenné jméno (Greeting), jako je dvojice sloves-podstatné jméno zkompilované rutiny. Funkce ale nemusí mít název slovesa-podstatné jméno.

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

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

Parametry funkce jsou deklarovány pomocí atributu Parameter . Tento atribut lze použít samostatně, nebo ho lze kombinovat s atributem Alias nebo s několika dalšími atributy ověření parametru. Další informace o deklarování parametrů (včetně dynamických parametrů při běhu) najdete v tématu about_Functions_Advanced_Parameters.

Skutečná práce předchozí funkce se provádí v process bloku, který je ekvivalentní metodě ProcessingRecord , která je používána zkompilovanými rutinami ke zpracování dat předávaných rutinám. Tento blok spolu s beginend bloky je popsán v about_Functions_Advanced_Methods tématu.

Pokročilé funkce se liší od zkompilovaných rutin následujícími způsoby:

  • Vazba rozšířeného parametru funkce nevyvolá výjimku, pokud je pole řetězců svázané s logickým parametrem.
  • Atribut ValidateSet a ValidatePattern atribut nemohou předat pojmenované parametry.
  • Pokročilé funkce se nedají použít v transakcích.

Viz také