Come ottenere gli argomenti della riga di comando in Windows PowerShell

  1. Definire i parametri nello script PowerShell
  2. Parametri nominati nello script PowerShell
  3. Assegnare valori predefiniti ai parametri nello script PowerShell
  4. Parametri switch nello script PowerShell
  5. Parametri obbligatori nello script PowerShell
Come ottenere gli argomenti della riga di comando in Windows PowerShell

Gestiamo gli argomenti utilizzando la funzione di parametro di Windows PowerShell chiamata param(). La funzione di parametro di Windows PowerShell è un componente fondamentale di qualsiasi script. Un parametro è il modo in cui gli sviluppatori consentono agli utenti degli script di fornire input durante l’esecuzione.

In questo articolo, imparerai come creare script con la funzione di parametro, usarli e alcune buone pratiche per costruire i parametri.

Definire i parametri nello script PowerShell

Gli amministratori possono creare parametri per script e funzioni utilizzando la funzione di parametro param(). Una funzione contiene uno o più parametri definiti da variabili.

Hello_World.ps1:

param(
    $message
)

Tuttavia, per garantire che il parametro accetti solo il tipo di input di cui hai bisogno, le buone pratiche prevedono di assegnare un tipo di dati al parametro utilizzando un blocco di parametri [Parameter()] e racchiudendo il tipo di dati tra parentesi quadre [] prima della variabile.

Hello_World.ps1:

param(
    [Parameter()]
    [String]$message
)

Nell’esempio Hello_World.ps1 sopra, la variabile message accetterà solo un valore passato se il valore fornito ha un tipo di dati String.

Parametri nominati nello script PowerShell

Un modo per utilizzare la funzione di parametro in uno script è tramite il nome del parametro: questo metodo è chiamato parametri nominati. Quando chiamiamo uno script o una funzione tramite parametri nominati, utilizziamo il nome della variabile come nome completo del parametro.

Abbiamo creato un Hello_World.ps1 e definito variabili all’interno della funzione di parametro in questo esempio. Ricorda che possiamo mettere una o più variabili all’interno della funzione di parametro.

Hello_World.ps1:

param(
    [Parameter()]
    [String]$message,
    [String]$emotion
)

Write-Output $message
Write-Output "I am $emotion"

Possiamo quindi utilizzare i parametri nominati come argomento quando eseguiamo un file .ps1.

.\Hello_World.ps1 -message 'Hello World!' -emotion 'happy'

Output:

Hello World!
I am happy

Assegnare valori predefiniti ai parametri nello script PowerShell

Possiamo assegnare un valore predefinito a un parametro dando al parametro un valore all’interno dello script. Quindi, eseguendo lo script senza passare valori dalla riga di esecuzione, il valore predefinito della variabile definita all’interno dello script verrà utilizzato.

param(
    [Parameter()]
    [String]$message = "Hello World",
    [String]$emotion = "happy"
)

Write-Output $message
Write-Output "I am $emotion"
.\Hello_World.ps1

Output:

Hello World!
I am happy

Parametri switch nello script PowerShell

Un altro parametro che possiamo utilizzare è il parametro switch definito dal tipo di dati [switch]. Il parametro switch è utilizzato per valori binari o Booleani per indicare true o false.

Hello_World.ps1:

param(
    [Parameter()]
    [String]$message,
    [String]$emotion,
    [Switch]$display
)
if ($display) {
    Write-Output $message
    Write-Output "I am $emotion"
}
else {
    Write-Output "User denied confirmation."
}

Possiamo chiamare il nostro script con il parametro dello script utilizzando la sintassi qui sotto.

.\Hello_World.ps1 -message 'Hello World!' -emotion 'happy' -display:$false

Output:

User denied confirmation.

Parametri obbligatori nello script PowerShell

È comune avere uno o più parametri che devono essere utilizzati quando uno script viene eseguito. Possiamo rendere un parametro obbligatorio aggiungendo un attributo Mandatory all’interno del blocco di parametro [Parameter()].

Hello_World.ps1:

param(
    [Parameter(Mandatory)]
    [String]$message,
    [String]$emotion,
    [Switch]$display
)
if ($display) {
    Write-Output $message
    Write-Output "I am $emotion"
}
else {
    Write-Output "User denied confirmation."
}

Quando esegui Hello_World.ps1, Windows PowerShell non consentirà l’esecuzione dello script e ti chiederà un valore.

.\Hello_World.ps1

Output:

cmdlet hello_world.ps1 at command pipeline position 1
Supply values for the following parameters:
message:
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