Sei sulla pagina 1di 2

ARGOMENTO

about_Functions_Advanced

DESCRIZIONE BREVE
Presenta le funzioni avanzate che hanno un comportamento analogo
ai cmdlet.

DESCRIZIONE DETTAGLIATA
Le funzioni avanzate consentono di scrivere funzioni che possono
eseguire operazioni analoghe a quelle eseguiti con cmdlet. Le funzioni
avanzate sono utili quando si desidera scrivere rapidamente una
funzione senza dover scrivere un cmdlet compilato mediante un
linguaggio .NET Framework. Queste funzioni sono utili anche quando si
desidera limitare la funzionalità di un cmdlet compilato o quando si
desidera scrivere una funzione analoga a un cmdlet compilato.

Vi è una differenza tra la creazione di un cmdlet compilato e di una


funzione avanzata. I cmdlet compilati sono classi .NET Framework che
devono essere scritte in un linguaggio .NET Framework quale C#. Le
funzioni avanzate, invece, sono scritte nel linguaggio script di
Windows PowerShell nello stesso modo in cui sono scritte le altre
funzioni o i blocchi di script.

Le funzioni avanzate utilizzano l'attributo CmdletBinding che le


identifica come funzioni dal comportamento analogo ai cmdlet.
L'attributo CmdletBinding è analogo all'attributo Cmdlet
utilizzato nelle classi dei cmdlet compilati per identificare la
classe come un cmdlet. Per ulteriori informazioni su questo attributo,
vedere about_Functions_CmdletBindingAttribute.

Nell'esempio seguente viene mostrata una funzione che accetta un nome,


quindi stampa un saluto utilizzando il nome fornito. Notare inoltre
che questa funzione definisce un nome che include una coppia verbo
(Send) e sostantivo (Greeting) analoga alla coppia verbo-sostantivo
di un cmdlet compilato. Non è tuttavia necessario che le funzioni
presentino un nome verbo-sostantivo.

function Send-Greeting
{
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string] $Name
)
Process
{
write-host ("Hello " + $Name + "!")
}
}

I parametri della funzione vengono dichiarati tramite l'attributo


Parameter. Questo attributo può essere utilizzato da solo o può essere
combinato con l'attributo Alias o con diversi altri attributi di
convalida dei parametri.
Per ulteriori informazioni sulla dichiarazione dei parametri (inclusi
parametri dinamici aggiunti in fase di esecuzione), vedere
about_Functions_Advanced_Parameters.

Il funzionamento effettivo della funzione precedente viene


eseguito nel blocco Process che equivale al metodo ProcessingRecord
utilizzato dai cmdlet compilati per elaborare i dati passati al
cmdlet. Questo blocco, insieme ai blocchi Begin ed End è descritto
nell'argomento about_Functions_Advanced_Methods.

Le funzioni avanzate presentano le differenze seguenti rispetto


ai cmdlet compilati:

- L'associazione dei parametri delle funzioni avanzate non genera


un'eccezione quando una matrice di stringhe è associata a un
parametro booleano.

- L'attributo ValidateSet e l'attributo ValidatePattern non


possono passare parametri denominati.

- Le funzioni avanzate non possono essere utilizzate nelle


transazioni.

VEDERE ANCHE
about_Functions_Advanced_CmdletBindingAttribute
about_Functions_Advanced_Methods
about_Functions_Advanced_Parameters
Cmdlet di Windows PowerShell (http://go.microsoft.com/fwlink/?Link
ID=135279)

Potrebbero piacerti anche