Udostępnij za pośrednictwem


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 programu PowerShell i polecenia cmdlet CDXML.

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.

Parametry funkcji to zmienne zadeklarowane w instrukcji param(). Można użyć opcjonalnego atrybutu [Parameter()] sam lub w połączeniu z atrybutem [Alias()] lub dowolnym atrybutem weryfikacji parametru. Aby uzyskać więcej informacji na temat deklarowania parametrów, zobacz about_Functions_Advanced_Parameters.

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

Ta funkcja wykonuje pracę w bloku process, który jest odpowiednikiem metody ProcessingRecord używanej w skompilowanych poleceniach cmdlet. Blok process i inne nazwane bloki są opisane w 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ż