Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
oraz 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
iValidatePattern
atrybut nie mogą przekazać nazwanych parametrów. - Funkcje zaawansowane nie mogą być używane w transakcjach.