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
iValidatePattern
atrybut nie mogą przekazać nazwanych parametrów. - Funkcje zaawansowane nie mogą być używane w transakcjach.