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 (https://go.microsoft.com/fwlink/?Link
ID=135279)