HOWTO · PowerShell
Valori multipli su un parametro in PowerShell
Questo articolo discuterà la funzione parametro, i diversi tipi di variabili che possiamo definire in un parametro, come gestire valori multipli in un singolo parametro e i suoi usi esemplificativi.
Gestiamo gli argomenti utilizzando la funzione di parametro di PowerShell param. È un componente fondamentale di qualsiasi script, che consente agli sviluppatori di fornire input in fase di esecuzione.
Inoltre, se il comportamento di uno script deve cambiare, un parametro può offrire l’opportunità di farlo senza modificare il codice sottostante.
Questo articolo discuterà la funzione parameter, diverse variabili che possiamo definire, gestire più valori in un singolo parametro e usi di esempio.
Comprendere la funzione Parameter in PowerShell
Gli amministratori possono creare parametri per gli script utilizzando la funzione di parametro param().
All’interno, la funzione di parametro contiene uno o più parametri definiti da variabili.
param ($myVariable)
Tuttavia, per garantire che il parametro accetti solo il tipo di input di cui hai bisogno, è meglio assegnare un tipo di dato al parametro racchiudendo il tipo di dato tra parentesi quadre [] prima della variabile.
param ([String]$myVariable)
–>
Vale la pena notare che puoi anche utilizzare altri tipi di dati come interi, float e DateTime. Possiamo anche assegnarlo come tipo di dato Boolean di cui discuteremo ulteriormente.
Utilizzare i parametri Named in PowerShell
L’uso di una funzione di parametro in uno script avviene tramite parametri named.
Quando si passano valori a uno script o a una funzione tramite parametri named, possiamo usare il nome della variabile come il nome completo del parametro.
sample.ps1:
param ([String]$name)
Write-Output $name
Possiamo quindi utilizzare i parametri named quando eseguiamo un file .ps1.
powershell.exe .\sample.ps1 -name "John"
Utilizzare i valori predefiniti per un parametro in PowerShell
Possiamo assegnare un valore predefinito a un parametro fornendo al parametro un valore all’interno dello script.
Inoltre, eseguire lo script senza passare valori dalla riga di comando prenderà la variabile predefinita definita all’interno dello script.
param ([String]$name = "John")
Utilizzare i parametri Switch in PowerShell
Possiamo utilizzare un altro tipo di parametro per i nostri script: il parametro switch definito dal tipo di dato [switch].
Questo parametro è principalmente utilizzato per valori binari o booleani di cui abbiamo parlato in precedenza, indicando il valore di true o false.
param ([switch]$isEnabled)
–>
Utilizzare i parametri Mandatory in PowerShell
È comune in alcuni dei nostri casi d’uso avere uno o più parametri che devono essere utilizzati quando uno script viene eseguito.
Possiamo definire un parametro obbligatorio aggiungendo un attributo Mandatory all’interno del blocco del parametro [Parameter()].
param (
[Parameter(Mandatory)]
[String] $servername
)
L’ambiente di scripting non consentirà l’esecuzione dello script a meno che non sia stato fornito un valore nella riga di comando.
Utilizzare un numero sconosciuto di argomenti in PowerShell
In generale, trovo che l’uso di parametri named sia di gran lunga superiore a leggere semplicemente gli argomenti dalla riga di comando. È più facile leggere gli argomenti quando è necessario gestire un numero sconosciuto di argomenti.
Prendiamo le lettere delle unità come esempio. Forse abbiamo bisogno di uno script per controllare una o più unità nella macchina.
Quindi, possiamo usare un parametro named e dichiararlo come tipo di dato String.
checkdrives.ps1:
param([String]$myDrive)
foreach ($drive in $myDrive) {
Write-Output "Processing drive $drive"
}
Tuttavia, passando più lettere di unità nell’argomento, PowerShell lo tratterà come un oggetto unico.
powershell .\checkdrives.ps1 -myDrive C, D, E
Output:
Processing drive C D E
PowerShell sostituirà le virgole con spazi e le tratterà come una variabile unica. Sfortunatamente, questo non funzionerebbe poiché dobbiamo elaborare le unità singolarmente nel nostro caso d’uso.
Per far sì che il nostro interprete catturi più parametri sotto un argomento, dobbiamo cambiare il tipo di dato come un array con parentesi quadre []. Quindi, quando viene eseguito, PowerShell elaborerà gli argomenti elencati singolarmente.
checkdrives.ps1:
param([String[]]$myDrive)
foreach ($drive in $myDrive) {
Write-Output "Processing drive $drive"
}
Codice di esempio:
powershell .\checkdrives.ps1 -myDrive C, D, E
Ricorda di separare gli argomenti con una virgola.
Output:
Processing drive C
Processing drive D
Processing drive E
Utilizzare i parametri Pipeline in PowerShell
La maggior parte dei cmdlet di PowerShell ti consente di utilizzare il simbolo della pipe | per passare dati. Possiamo sfruttarlo quando si tratta di parametri.
Ad esempio, possiamo ottenere l’ultimo valore memorizzato nella pipeline e passarlo a un altro file PowerShell utilizzando l’attributo ValueFromPipeline del blocco di parametro.
pipeline.ps1:
param([parameter(ValueFromPipeline)]$pipedVar)
Write-Output $pipedVar
Codice di esempio:
"This string is from the pipeline." | .\pipeline.ps1
Output:
This string is from the pipeline.
Utilizzare questa tecnica apre molte opportunità per eseguire file PowerShell concatenati.