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é funkce PowerShellu, 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.

Parametry funkce jsou proměnné deklarované v příkazu param(). Volitelný atribut [Parameter()] můžete použít samostatně nebo v kombinaci s atributem [Alias()] nebo libovolným atributem ověření parametru. Další informace o deklarování parametrů naleznete v tématu about_Functions_Advanced_Parameters.

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 + "!")
    }
}

Tato funkce provádí práci v bloku process, který odpovídá metodě ProcessingRecord použitou v kompilovaných rutinách. Blok process a další pojmenované bloky jsou popsány v about_Functions_Advanced_Methods.

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é