Informazioni sulle funzioni avanzateAbout Functions Advanced

DESCRIZIONE BREVESHORT DESCRIPTION

Introduce funzioni avanzate che rappresentano un modo per creare cmdlet tramite script.Introduces advanced functions that are a way to create cmdlets using scripts.

DESCRIZIONE LUNGALONG DESCRIPTION

Un cmdlet è un singolo comando che fa parte della semantica della pipeline di PowerShell.A cmdlet is a single command that participates in the pipeline semantics of PowerShell. Sono inclusi cmdlet binari, funzioni script avanzate, CDXML e flussi di lavoro.This includes binary cmdlets, advanced script functions, CDXML, and Workflows.

Le funzioni avanzate consentono di creare cmdlet scritti come una funzione di PowerShell.Advanced functions allow you create cmdlets that are written as a PowerShell function. Le funzioni avanzate semplificano la creazione di cmdlet senza la necessità di scrivere e compilare un cmdlet binario.Advanced functions make it easier to create cmdlets without having to write and compile a binary cmdlet. I cmdlet binari sono classi .NET scritte in un linguaggio .NET, ad esempio C#.Binary cmdlets are .NET classes that are written in a .NET language such as C#.

Le funzioni avanzate usano l' CmdletBinding attributo per identificarle come funzioni che fungono da cmdlet.Advanced functions use the CmdletBinding attribute to identify them as functions that act like cmdlets. L' CmdletBinding attributo è simile all'attributo cmdlet utilizzato nelle classi di cmdlet compilate per identificare la classe come cmdlet.The CmdletBinding attribute is similar to the Cmdlet attribute that is used in compiled cmdlet classes to identify the class as a cmdlet. Per ulteriori informazioni su questo attributo, vedere about_Functions_CmdletBindingAttribute.For more information about this attribute, see about_Functions_CmdletBindingAttribute.

Nell'esempio seguente viene illustrata una funzione che accetta un nome e quindi stampa un saluto utilizzando il nome fornito.The following example shows a function that accepts a name and then prints a greeting using the supplied name. Si noti inoltre che questa funzione definisce un nome che include una coppia verbo (Send) e sostantivo (saluto) come la coppia verbo-sostantivo di un cmdlet compilato.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. Tuttavia, le funzioni non devono avere un nome verbo-sostantivo.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 + "!")
    }
}

I parametri della funzione vengono dichiarati usando l'attributo Parameter.The parameters of the function are declared by using the Parameter attribute. Questo attributo può essere usato da solo oppure può essere combinato con l'attributo alias oppure con diversi altri attributi di convalida dei parametri.This attribute can be used alone, or it can be combined with the Alias attribute or with several other parameter validation attributes. Per ulteriori informazioni su come dichiarare i parametri (inclusi i parametri dinamici aggiunti in fase di esecuzione), vedere 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.

Il lavoro effettivo della funzione precedente viene eseguito nel blocco del processo, che equivale al metodo ProcessingRecord usato dai cmdlet compilati per elaborare i dati passati al 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. Questo blocco, insieme ai blocchi Begin e end, è descritto nell'argomento about_Functions_Advanced_Methods .This block, along with the Begin and End blocks, is described in the about_Functions_Advanced_Methods topic.

Le funzioni avanzate differiscono dai cmdlet compilati nei modi seguenti:Advanced functions differ from compiled cmdlets in the following ways:

  • L'associazione di parametri della funzione avanzata non genera un'eccezione quando una matrice di stringhe è associata a un parametro booleano.Advanced function parameter binding does not throw an exception when an array of strings is bound to a Boolean parameter.
  • L'attributo ValidateSet e l'attributo ValidatePattern non possono passare parametri denominati.The ValidateSet attribute and the ValidatePattern attribute cannot pass named parameters.
  • Le funzioni avanzate non possono essere utilizzate nelle transazioni.Advanced functions cannot be used in transactions.

VEDERE ANCHESEE 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