about_Functions_Advanced

Krótki opis

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

Długi opis

Polecenie cmdlet to jedno 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 do identyfikowania CmdletBinding ich jako funkcji, które działają jak polecenia cmdlet. Atrybut CmdletBinding jest podobny do atrybutu cmdlet używanego w skompilowanych klasach poleceń cmdlet w celu zidentyfikowania 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ę zawierającą czasownik (Send) i parę noun (Greeting), taką jak para czasowników skompilowanego polecenia cmdlet. Jednak funkcje nie muszą mieć nazwy czasownika.

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

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

Parametry funkcji są deklarowane przy użyciu atrybutu Parameter . Ten atrybut może być używany 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 process bloku, który jest odpowiednikiem metody ProcessingRecord , która jest używana przez skompilowane polecenia cmdlet do przetwarzania danych przekazanych do polecenia cmdlet. Ten blok wraz z blokami begin i end jest 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 ValidatePattern atrybut nie mogą przekazać nazwanych parametrów.
  • Funkcje zaawansowane nie mogą być używane w transakcjach.

Zobacz też