Passare parametri a uno script di Windows PowerShell

Completato

È possibile configurare gli script in modo che accettino i parametri nello stesso modo in cui lo fanno i cmdlet. È un metodo valido per consentire agli utenti di dare un input perché è coerente con il modo in cui gli utenti danno un input per i cmdlet. La coerenza semplifica la comprensione da parte degli utenti.

Per identificare le variabili in cui verranno archiviati i valori dei parametri, usare un blocco Param(). I nomi delle variabili vengono definiti tra parentesi. La sintassi per l'uso di un blocco Param() è:

Param(
   [string]$ComputerName ,
   [int]$EventID
)

I nomi delle variabili definiti nel blocco Param() sono anche i nomi dei parametri. Nell'esempio precedente lo script contenente questo blocco Param() include i parametri -ComputerName e -EventID che è possibile usare. Quando si immettono i nomi dei parametri per lo script, è possibile usare il completamento tramite tasto TAB esattamente come per i parametri dei cmdlet. La sintassi per l'esecuzione di uno script con parametri è:

.\GetEvent.ps1 -ComputerName LON-DC1 -EventID 5772

Nota

I parametri sono posizionali per impostazione predefinita. Se i nomi dei parametri non vengono specificati, i valori dei parametri vengono passati ai parametri seguendo l'ordine. Ad esempio, il primo valore dopo il nome dello script viene inserito nella prima variabile di parametro.

Nota

Se non si inserisce un blocco Param() nello script, è comunque possibile passare i dati nello script usando i parametri senza nome. I valori indicati dopo il nome dello script sono disponibili all'interno dello script nella matrice $args.

Definizione dei tipi di variabile

È consigliabile definire i tipi di variabile in un blocco Param(). Quando si definiscono i tipi di variabile, se un utente immette un valore che non può essere convertito in tale tipo di variabile, viene generato un errore. Questo è un metodo per convalidare i dati immessi dagli utenti.

È possibile usare il tipo di variabile interruttore per un parametro quando si vuole attivare o disattivare un'opzione. Quando lo script viene eseguito, la presenza del parametro imposta la variabile su $true. Se il parametro non è presente, il valore della variabile è $false. Ad esempio, in uno script che mostra in genere alcune informazioni sullo stato agli utenti, è possibile creare un parametro -quiet che elimina tutti gli output sullo schermo.

Una variabile interruttore è in genere preferibile rispetto a una variabile booleana per i parametri perché la sintassi per gli utenti è più semplice. Gli utenti non devono includere un valore $true o $false.

Valori predefiniti

È possibile definire i valori predefiniti per i parametri nel blocco Param(). I valori predefiniti stabiliti dall'utente vengono usati solo se l'utente non indica un valore per il parametro. Ciò garantisce che a ogni parametro necessario sia associato un valore.

L'esempio seguente illustra come impostare un valore predefinito:

Param(
   [string]$ComputerName = "LON-DC1"
)

Richiesta di input utente

È anche possibile richiedere l'input se l'utente non indica un valore per il parametro. Ciò garantisce che l'utente indichi un valore per un parametro quando non è presente un valore predefinito logico che è possibile specificare.

L'esempio seguente illustra come richiedere l'input dell'utente:

Param(
   [int]$EventID = Read-Host "Enter event ID"
)

Nota

È possibile configurare opzioni avanzate aggiuntive per i parametri in uno script, ad esempio rendendo un parametro obbligatorio con l'attributo Parameter() nel blocco Param().

Altri riferimenti: per altre informazioni sull'attributo Parameter(), fare riferimento a about_Functions_Advanced_Parameters.