about_Functions_Advanced

Aggiornamento: maggio 2014

Si applica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

ARGOMENTO

about_Functions_Advanced

DESCRIZIONE BREVE

In questo articolo vengono descritte le funzionalità avanzate che agiscono in modo analogo ai cmdlet.

DESCRIZIONE LUNGA

Le funzionalità avanzate consentono di scrivere funzionalità che eseguono operazioni analoghe a quelle che è possibile eseguire con i cmdlet. Le funzionalità avanzate sono utili quando si desidera scrivere velocemente una funzionalità senza scrivere un cmdlet compilato tramite il linguaggio Microsoft .NET Framework. Queste funzionalità sono utili anche quando si desidera limitare la funzionalità di un cmdlet compilato o quando si desidera scrivere una funzione simile a un cmdlet compilato.

Esiste una differenza tra la creazione di un cmdlet compilato e una funzionalità avanzata. I cmdlet compilati sono classi .NET Framework che devono essere scritte in un linguaggio di .NET Framework, ad esempio C#. Al contrario, le funzionalità avanzate vengono scritte nel linguaggio script di Windows PowerShell® nello stesso modo in cui vengono scritti altri blocchi di script o funzionalità.

Le funzionalità avanzate usano l'attributo CmdletBinding per essere identificate come funzionalità che agiscono in modo analogo ai cmdlet. L'attributo CmdletBinding è simile all'attributo Cmdlet che viene usato nelle classi di cmdlet compilati al fine di identificare la classe come cmdlet. Per altre informazioni su questo attributo, vedere about_Functions_CmdletBindingAttribute.

Nell'esempio seguente viene descritta una funzionalità che accetta un nome e stampa un messaggio di benvenuto usando tale nome. Tenere presente che questa funzionalità definisce un nome che include una coppia verbo (Send) e nome (Greeting) analoga a quella verbo-nome del cmdlet compilato. Tuttavia, non è necessario che le funzionalità dispongano di un nome composto da verbo-nome.

        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. L'attributo può essere usato da solo oppure insieme a quello Alias o con altri attributi di convalida dei parametri. Per maggiori informazioni su come dichiarare i parametri (inclusi i parametri dinamici che vengono aggiunti in fase di esecuzione), vedere about_Functions_Advanced_Parameters.

Il lavoro effettivo della funzione precedente viene eseguito nel blocco Process, che equivale al metodo ProcessingRecord usato dai cmdlet compilati per elaborare i dati che viene passati al cmdlet. Questo blocco, nonché quelli Begin ed End, viene descritto nell'argomento about_Functions_Advanced_Methods.

Le funzionalità avanzate sono differenti rispetto ai cmdlet compilati, in base a quanto segue:

- L'associazione del parametro relativo alle funzionalità avanzate non genera un'eccezione quando un array di stringhe viene associata a un parametro booleano.

- L'attributo ValidateSet e l'attributo ValidatePattern non possono trasferire i parametri denominati.

- Le funzionalità avanzate non possono essere usate nelle transazioni.

VEDERE ANCHE

about_Functions

about_Functions_Advanced_Methods

about_Functions_Advanced_Parameters

about_Functions_CmdletBindingAttribute

about_Functions_OutputTypeAttribute

Cmdlet di Windows PowerShell (https://go.microsoft.com/fwlink/?LinkID=135279)