about_Functions_Advanced

Krótki opis

Wprowadza zaawansowane funkcje, które są sposobem tworzenia poleceń cmdlet przy użyciu skryptów.

Długi opis

Polecenie cmdlet to pojedyncze polecenie, które uczestniczy w semantyce potoku programu PowerShell. Obejmuje to polecenia cmdlet binarne, zaawansowane funkcje skryptów, cdXML i przepływy pracy.

Funkcje zaawansowane umożliwiają tworzenie poleceń cmdlet napisanych jako funkcja programu PowerShell. Funkcje zaawansowane ułatwiają tworzenie poleceń cmdlet bez konieczności pisania i kompilowania binarnego polecenia cmdlet. Polecenia cmdlet binarne to klasy platformy .NET napisane w języku .NET, takim jak C#.

Funkcje zaawansowane używają atrybutu CmdletBinding do identyfikowania ich jako funkcji, które działają jak polecenia cmdlet. Atrybut CmdletBinding jest podobny do atrybutu cmdlet, który jest używany w skompilowanych klasach poleceń cmdlet do identyfikowania klasy jako polecenia cmdlet. Aby uzyskać więcej informacji na temat tego atrybutu, zobacz about_Functions_CmdletBindingAttribute.

W poniższym przykładzie pokazano funkcję, która akceptuje nazwę, a następnie drukuje powitanie przy użyciu podanej nazwy. Zwróć również uwagę, że ta funkcja definiuje nazwę, która zawiera czasownik (Send) i noun (Greeting), taką jak para czasownik-noun skompilowanego polecenia cmdlet. Jednak funkcje nie są wymagane, aby mieć nazwę czasownika-noun.

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

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

Parametry funkcji są deklarowane przy użyciu atrybutu Parameter. Tego atrybutu można używać samodzielnie lub można go połączyć z atrybutem Alias lub z kilkoma innymi atrybutami weryfikacji parametrów. Aby uzyskać więcej informacji na temat deklarowania parametrów (w tym parametrów dynamicznych dodawanych w czasie wykonywania), zobacz about_Functions_Advanced_Parameters.

Rzeczywista praca poprzedniej funkcji jest wykonywana w bloku Proces, który jest odpowiednikiem metody ProcessingRecord, która jest używana przez skompilowane polecenia cmdlet do przetwarzania danych przekazywanych do polecenia cmdlet. Ten blok wraz z blokami Początek i Koniec został opisany w temacie about_Functions_Advanced_Methods .

Funkcje zaawansowane różnią się od skompilowanych poleceń cmdlet w następujący sposób:

  • Zaawansowane powiązanie parametrów funkcji nie zgłasza wyjątku, gdy tablica ciągów jest powiązana z parametrem logicznym.
  • Atrybut ValidateSet i atrybut ValidatePattern nie mogą przekazać nazwanych parametrów.
  • Funkcji zaawansowanych nie można używać w transakcjach.

Zobacz też