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 di script avanzate, CDXML e flussi di lavoro.

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.

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 + "!")
    }
}

I parametri della funzione vengono dichiarati usando l'attributo Parameter . Questo attributo può essere usato da solo oppure può essere combinato con l'attributo Alias o con diversi altri attributi di convalida dei parametri. Per altre informazioni su come dichiarare i parametri (inclusi i parametri dinamici aggiunti in fase di esecuzione), vedere about_Functions_Advanced_Parameters.

Il lavoro effettivo della funzione precedente viene eseguito nel process blocco , equivalente al metodo ProcessingRecord usato dai cmdlet compilati per elaborare i dati passati al cmdlet . Questo blocco, insieme ai begin blocchi e end , è descritto nell'argomento 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