Informacje o funkcjach zaawansowanychAbout Functions Advanced

KRÓTKI OPISSHORT DESCRIPTION

Wprowadza zaawansowane funkcje, które są sposobem na tworzenie poleceń cmdlet przy użyciu skryptów.Introduces advanced functions that are a way to create cmdlets using scripts.

DŁUGI OPISLONG DESCRIPTION

Polecenie cmdlet to pojedyncze polecenie, które uczestniczy w semantyce potoku programu PowerShell.A cmdlet is a single command that participates in the pipeline semantics of PowerShell. Obejmuje to binarne polecenia cmdlet, zaawansowane funkcje skryptu, CDXML i przepływy pracy.This includes binary cmdlets, advanced script functions, CDXML, and Workflows.

Funkcje zaawansowane umożliwiają tworzenie poleceń cmdlet, które są zapisywane jako funkcja programu PowerShell.Advanced functions allow you create cmdlets that are written as a PowerShell function. Funkcje zaawansowane ułatwiają tworzenie poleceń cmdlet bez konieczności pisania i kompilowania binarnego polecenia cmdlet.Advanced functions make it easier to create cmdlets without having to write and compile a binary cmdlet. Binarne polecenia cmdlet to klasy .NET, które są zapisywane w języku .NET, takim jak C#.Binary cmdlets are .NET classes that are written in a .NET language such as C#.

Funkcje zaawansowane używają CmdletBinding atrybutu, aby identyfikować je jako funkcje, które działają podobnie do poleceń cmdlet.Advanced functions use the CmdletBinding attribute to identify them as functions that act like cmdlets. Ten CmdletBinding atrybut jest podobny do atrybutu polecenia cmdlet, który jest używany w skompilowanych klasach poleceń cmdlet do identyfikowania klasy jako polecenia cmdlet.The CmdletBinding attribute is similar to the Cmdlet attribute that is used in compiled cmdlet classes to identify the class as a cmdlet. Aby uzyskać więcej informacji na temat tego atrybutu, zobacz about_Functions_CmdletBindingAttribute.For more information about this attribute, see about_Functions_CmdletBindingAttribute.

Poniższy przykład pokazuje funkcję, która akceptuje nazwę, a następnie drukuje powitanie przy użyciu podanej nazwy.The following example shows a function that accepts a name and then prints a greeting using the supplied name. Zauważ również, że ta funkcja definiuje nazwę, która zawiera parę czasownik (Send) i rzeczownik (Greetinger), taką jak para czasownik-rzeczownik skompilowanego polecenia cmdlet.Also notice that this function defines a name that includes a verb (Send) and noun (Greeting) pair like the verb-noun pair of a compiled cmdlet. Jednak funkcje nie muszą mieć nazwy czasownik-rzeczownik.However, functions are not required to have a verb-noun name.

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

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

Parametry funkcji są deklarowane przy użyciu atrybutu Parameter.The parameters of the function are declared by using the Parameter attribute. Ten atrybut może być używany samodzielnie lub może być połączony z atrybutem aliasu lub z kilkoma innymi atrybutami walidacji parametru.This attribute can be used alone, or it can be combined with the Alias attribute or with several other parameter validation attributes. Aby uzyskać więcej informacji na temat sposobu deklarowania parametrów (łącznie z parametrami dynamicznymi, które są dodawane w czasie wykonywania), zobacz about_Functions_Advanced_Parameters.For more information about how to declare parameters (including dynamic parameters that are added at runtime), see about_Functions_Advanced_Parameters.

Rzeczywista pracy poprzedniej funkcji jest wykonywana w bloku procesu, która jest równoważna metodzie ProcessingRecord, która jest używana przez skompilowane polecenia cmdlet do przetwarzania danych, które są przesyłane do polecenia cmdlet.The actual work of the previous function is performed in the Process block, which is equivalent to the ProcessingRecord method that is used by compiled cmdlets to process the data that is passed to the cmdlet. Ten blok, wraz z blokami BEGIN i End, został opisany w temacie about_Functions_Advanced_Methods .This block, along with the Begin and End blocks, is described in the about_Functions_Advanced_Methods topic.

Funkcje zaawansowane różnią się od skompilowanych poleceń cmdlet w następujący sposób:Advanced functions differ from compiled cmdlets in the following ways:

  • Funkcja zaawansowanego powiązania parametrów funkcji nie zgłasza wyjątku, gdy tablica ciągów jest powiązana z parametrem logicznym.Advanced function parameter binding does not throw an exception when an array of strings is bound to a Boolean parameter.
  • Atrybut ValidateSet i atrybut ValidatePattern nie mogą przekazywać nazwanych parametrów.The ValidateSet attribute and the ValidatePattern attribute cannot pass named parameters.
  • Funkcje zaawansowane nie mogą być używane w transakcjach.Advanced functions cannot be used in transactions.

ZOBACZ RÓWNIEŻSEE ALSO

about_Functionsabout_Functions

about_Functions_Advanced_Methodsabout_Functions_Advanced_Methods

about_Functions_Advanced_Parametersabout_Functions_Advanced_Parameters

about_Functions_CmdletBindingAttributeabout_Functions_CmdletBindingAttribute

about_Functions_OutputTypeAttributeabout_Functions_OutputTypeAttribute