Come utilizzare le funzioni di PowerShell

  1. Differenza tra Funzioni e Cmdlet in PowerShell
  2. Introduzione alle Funzioni in PowerShell
  3. Aggiungere Parametri alle Funzioni in PowerShell
  4. Creare un Semplice Parametro su una Funzione in PowerShell
Come utilizzare le funzioni di PowerShell

Quando scriviamo uno script PowerShell, abbiamo molte opzioni. Ad esempio, potremmo scrivere mille righe di codice per attività, tutto in un unico blocco di codice.

Tuttavia, sarebbe complicato. Quindi, invece, dovremmo scrivere funzioni PowerShell.

Le funzioni PowerShell aumentano dramaticamente l’usabilità e la leggibilità del nostro codice, rendendo molto più facile lavorarci. In questo articolo, impareremo a scrivere funzioni, aggiungere e gestire i parametri delle nostre funzioni e configurare le funzioni per accettare input da pipeline.

Differenza tra Funzioni e Cmdlet in PowerShell

Il concetto di una funzione PowerShell potrebbe sembrare familiare perché somiglia ai cmdlet nativi di PowerShell. Comandi come Write-Host e Start-Service, ad esempio, sono molto simili alle funzioni.

Tuttavia, i cmdlet sono pezzi di codice nominati che risolvono un singolo problema e non sono facilmente personalizzabili. La differenza tra un cmdlet e una funzione è come sono realizzati questi costrutti.

Possiamo vedere quali comandi sono cmdlet e funzioni utilizzando il cmdlet Get-Command e il suo parametro -CommandType.

Get-Command -CommandType Function

Il comando sopra restituisce tutte le funzioni attualmente caricate nella nostra sessione PowerShell o all’interno dei moduli disponibili per PowerShell.

Introduzione alle Funzioni in PowerShell

Usiamo la parola chiave function per definire una funzione, seguita da un nome descrittivo definito dall’utente e un insieme di parentesi graffe. All’interno delle parentesi graffe c’è un blocco di script che vogliamo che PowerShell esegua.

Di seguito possiamo vedere una funzione primaria e l’esecuzione di quella funzione. La funzione, chiamata Install-Software, utilizza Write-Host per visualizzare un messaggio di uscita nella console (principalmente per simulare l’installazione).

Una volta definita, possiamo usare il nome di questa funzione per eseguire il codice all’interno del suo blocco di script.

Codice di Esempio:

function Install-Software {
    Write-Host 'The software has been installed.'
}

Install-Software

Uscita:

The software has been installed.

Migliori Pratiche per la Convenzione di Nominazione delle Funzioni con Sintassi Verb-Noun in PowerShell

Il nome di una funzione è essenziale. Possiamo dare ai nostri nomi di funzione qualsiasi nome vogliamo, ma il nome dovrebbe sempre descrivere cosa fa la funzione.

La migliore pratica per la convenzione di nominazione delle funzioni in PowerShell è la sintassi Verb-Noun.

Dovremmo sempre iniziare un nome di funzione con un verbo seguito da un trattino e un sostantivo. Utilizzare il cmdlet Get-Verb per trovare l’elenco dei verbi approvati.

Definire una Funzione Avanzata in PowerShell

Il tutorial presume che abbiamo copiato e incollato il codice precedente direttamente nella console di PowerShell in questa sezione. Possiamo anche definire funzioni in uno script.

Stavamo lavorando con una piccola funzione nella sezione precedente, quindi definirla nella console non era un grande problema. La maggior parte delle volte, però, avremo funzioni molto più grandi.

Quindi sarà più facile definire quelle funzioni in uno script o un modulo e poi chiamare quello script o modulo per caricare la funzione in memoria.

Come possiamo immaginare, ridigitare una funzione più grande ogni volta che vogliamo modificare la sua funzionalità potrebbe essere confuso.

Aggiungere Parametri alle Funzioni in PowerShell

Le funzioni possono avere un numero qualsiasi di parametri. Quando creiamo le nostre funzioni, avremo l’opzione di includere parametri e decidere come funzionano quei parametri.

I parametri possono essere opzionali o obbligatori e possono essere costretti ad accettare uno di un elenco limitato di argomenti oppure accettare qualsiasi cosa.

Ad esempio, il software immaginario che installiamo tramite la funzione Install-Software potrebbe avere molte versioni possibili in precedenza. Ma attualmente, la funzione Install-Software non offre all’utente alcun modo per specificare quale versione desidera installare.

Se fossimo noi gli unici a usare la funzione, potremmo cambiare il codice al suo interno ogni volta che volessimo una versione specifica, ma ciò consumerebbe molto tempo. Questo metodo sarebbe anche soggetto a potenziali errori, e vogliamo che altri possano utilizzare il nostro codice.

Introdurre parametri nella nostra funzione le consente di avere variabilità. Proprio come le variabili ci consentivano di scrivere script che potevano gestire molte versioni della stessa situazione, i parametri ci permetteranno di scrivere una singola funzione che fa la stessa cosa in molti modi.

In questo caso, vogliamo che installi versioni dello stesso software e lo faccia su molti computer.

Prima di tutto, aggiungiamo un parametro alla funzione che consente a un utente o a noi di specificare la versione da installare.

Creare un Semplice Parametro su una Funzione in PowerShell

Definire un parametro su una funzione richiede un blocco di parametri. Il blocco di parametri contiene tutti i parametri per la funzione.

Definire un blocco di parametri con la parola chiave param seguita da parentesi, come mostrato di seguito.

Codice di Esempio:

function Install-Software {
    [CmdletBinding()]
    param()

    Write-Host 'The software has been installed.'
}

A questo punto, la funzionalità reale della nostra funzione non è cambiata affatto. Abbiamo solo installato l’infrastruttura, preparando la funzione per un parametro.

Una volta aggiunto il blocco param, possiamo creare il parametro ponendolo all’interno delle sue parentesi, come mostrato di seguito.

Codice di Esempio:

function Install-Software {
    [CmdletBinding()]
    param(
        [Parameter()]
        [string] $Version
    )

    Write-Host "The software version $Version has been installed."

}

All’interno del blocco param sopra, prima definiremmo il blocco Parameter. Utilizzare il blocco Parameter() trasformerà il parametro in un “parametro avanzato”.

Un blocco param vuoto come quello qui fa nulla, ma è necessario; spiegheremo come usarlo nella prossima sezione.

Concentriamoci sul tipo [string] davanti al nome del parametro. Effettuiamo il cast dei parametri ponendo il tipo del parametro tra parentesi quadre prima del nome della variabile del parametro.

PowerShell tratterà sempre i valori predefiniti come stringhe. Qui sopra, qualsiasi cosa passata nella variabile $Version sarà sempre trattata come una stringa.

Aggiungiamo anche $Version nella nostra istruzione Write-Host. Poi, quando eseguiamo la funzione Install-Software con il parametro Version e gli passiamo un numero di versione, dovremmo ricevere un messaggio che lo mostra.

Codice di Esempio:

Install-Software -Version 2

Uscita:

The software version 2 has been installed.
Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Articolo correlato - PowerShell Function