Funzioni avanzate di PowerShell: associazioni e parametri dei cmdlet
CasaCasa > Blog > Funzioni avanzate di PowerShell: associazioni e parametri dei cmdlet

Funzioni avanzate di PowerShell: associazioni e parametri dei cmdlet

Aug 22, 2023

Brien Posey | 08 agosto 2023

PowerShell, come altri linguaggi di programmazione, utilizza le funzioni come blocchi di codice ripetibili.

Le funzioni sono utili per isolare grandi blocchi di codice dal corpo principale dello script. In effetti, puoi persino trasformare una funzione di PowerShell in un cmdlet autonomo. Di seguito è riportato un esempio di uno script PowerShell di base contenente una funzione:

Correlato: Come filtrare gli oggetti in PowerShell

Come puoi vedere, lo script non fa altro che visualizzare un paio di righe di testo, chiamare una funzione (denominata Do-Something) e quindi visualizzare un altro paio di righe di testo. Il codice della funzione è racchiuso tra parentesi graffe.

Ora, dopo aver esaminato un esempio di funzione di base, esaminiamo le funzioni avanzate in PowerShell. Il termine "funzione avanzata" ha un significato specifico e non ha nulla a che fare con la complessità della funzione. Una funzione avanzata è una funzione che supporta associazioni, parametri o entrambi dei cmdlet.

Esploreremo cosa significano questi termini e come possiamo trasformare la funzione di base mostrata sopra in una funzione avanzata.

Se hai mai esaminato la sintassi dei cmdlet nativi di PowerShell, potresti aver notato che molti cmdlet supportano parametri comuni. Ad esempio, nella Figura 1 è possibile vedere che il cmdlet Get-Service consente l'utilizzo di parametri comuni.

Figura 1.La maggior parte dei cmdlet nativi di PowerShell consente l'uso di parametri comuni.

I parametri comuni sono proprio come suggerisce il nome: parametri ampiamente supportati dai cmdlet nativi di PowerShell. I parametri comuni più diffusi includono:

Ecco perché sto visualizzando i parametri comuni: quando aggiungi associazioni di cmdlet a una funzione, abiliti la funzione per supportare parametri comuni. Potrebbe sembrare un po' strano, ma si ricollega all'idea di convertire una funzione in un cmdlet autonomo.

PowerShell semplifica l'aggiunta dell'associazione cmdlet a una funzione. Basta aggiungere queste due righe sotto la dichiarazione della funzione:

Per quanto semplice possa essere questa tecnica, è importante comprendere che l'aggiunta dell'associazione del cmdlet a una funzione non fa molto da sola. È ancora necessario indicare a PowerShell come utilizzare i parametri comuni. Per fortuna, questo di solito è più facile di quanto sembri.

Un parametro comune comunemente utilizzato è ErrorAction, che indica a uno script PowerShell come gestire gli errori non irreversibili che possono verificarsi durante l'esecuzione della funzione.

Per dimostrare come funziona, dai un'occhiata al seguente script:

Questo script assomiglia molto a quello presentato in precedenza, con alcune righe di codice aggiuntive:

Durante l'esecuzione dello script, verrà visualizzato un errore. Tuttavia, la funzione continuerà a essere eseguita nonostante l'errore poiché l'errore non era fatale. Puoi vedere come appare nella Figura 2. Per essere onesti, anche se non avessi incluso un'azione di errore, la funzione avrebbe continuato a essere eseguita in caso di errore non fatale poiché questo è il modo normale di fare le cose di PowerShell.

Figura 2.Quando lo script PowerShell rileva un errore, la funzione continua a essere eseguita.

Esistono un paio di altri modi per gestire l'errore. Nella Figura 3 è possibile vedere cosa succede quando l'azione relativa all'errore viene modificata in Interrompi. In questo caso, anche se l'errore non è fatale, PowerShell termina la funzione quando rileva l'errore. Vale la pena notare che, poiché l'azione di errore viene applicata alla chiamata di funzione, è solo la funzione (non l'intero script) che termina quando si verifica l'errore. Quando si verifica l'errore, PowerShell abbandona semplicemente la funzione, ritorna al corpo dello script e continua a eseguire il resto dello script.

Figura 3.Impostando ErrorAction su Stop, la funzione verrà terminata quando si verifica un errore.

La Figura 4 mostra cosa succede quando si imposta l'azione di errore su SilentlyContinue. In questo caso, anche se si verifica l'errore, PowerShell nasconde il messaggio di errore e procede con l'esecuzione della funzione fino al suo completamento.

Figura 4.