Condividi tramite


about_Functions_Advanced

Descrizione breve

Introduce funzioni avanzate che consentono di creare cmdlet usando script.

Descrizione lunga

Un cmdlet è un singolo comando che partecipa alla semantica della pipeline di PowerShell. Sono inclusi cmdlet binari, funzioni avanzate di PowerShell e cmdlet CDXML.

Le funzioni avanzate consentono di creare cmdlet scritti come funzione di PowerShell. Le funzioni avanzate semplificano la creazione di cmdlet senza dover scrivere e compilare un cmdlet binario. I cmdlet binari sono classi .NET scritte in un linguaggio .NET, ad esempio C#.

Le funzioni avanzate usano l'attributo CmdletBinding per identificarle come funzioni che fungono da cmdlet. L'attributo CmdletBinding è simile all'attributo Cmdlet usato nelle classi di cmdlet compilate per identificare la classe come cmdlet. Per altre informazioni su questo attributo, vedere about_Functions_CmdletBindingAttribute.

I parametri della funzione sono variabili dichiarate nell'istruzione param(). È possibile usare l'attributo facoltativo [Parameter()] da solo o in combinazione con l'attributo [Alias()] o uno qualsiasi degli attributi di convalida dei parametri. Per altre informazioni su come dichiarare i parametri, vedere about_Functions_Advanced_Parameters.

Nell'esempio seguente viene illustrata una funzione che accetta un nome e quindi stampa un messaggio di saluto usando il nome fornito. Si noti anche che questa funzione definisce un nome che include una coppia verbo (Send) e sostantivo (Greeting) come la coppia verb-sostantivo di un cmdlet compilato. Tuttavia, le funzioni non devono avere un nome verbo-sostantivo.

function Send-Greeting
{
    [CmdletBinding()]
    param(
        [Parameter(Mandatory=$true)]
        [string] $Name
    )

    process
    {
        Write-Host ("Hello " + $Name + "!")
    }
}

Questa funzione esegue il lavoro nel blocco , equivalente al metodo ProcessingRecord usato nei cmdlet compilati. Il blocco process e gli altri blocchi nominati sono descritti in about_Functions_Advanced_Methods.

Le funzioni avanzate differiscono dai cmdlet compilati nei modi seguenti:

  • L'associazione avanzata dei parametri di funzione 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 usate nelle transazioni.

Vedi anche