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 napsané jako funkce PowerShellu. Pokročilé funkce usnadňují vytváření rutin, aniž byste museli zapisovat a kompilovat binární rutinu. Binární rutiny jsou třídy .NET, které jsou 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á v kompilovaných tříd rutinách 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 (Pozdrav), například dvojici sloves-jmenné jméno zkompilované rutiny. Funkce ale nevyžadují název slovesa-jmenné jméno.

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

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

Parametry funkce se deklarují 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řidaných za běhu) najdete v tématu about_Functions_Advanced_Parameters.

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

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

  • Vazba parametru rozšířené funkce nevyvolá výjimku, pokud je pole řetězců vázáno na logický parametr.
  • Atribut ValidateSet a atribut ValidatePattern nemůže předat pojmenované parametry.
  • Pokročilé funkce nelze použít v transakcích.

Viz také