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)