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) 




Argomenti della Guida