Come confermare un prompt in PowerShell

  1. Usa l’interruttore -Confirm per il prompt di conferma in PowerShell
  2. Usa l’istruzione if per il prompt di conferma in PowerShell
  3. Usa il metodo PromptForChoice() per il prompt di conferma in PowerShell
  4. Usa approcci basati su funzioni per il prompt di conferma in PowerShell
  5. Conclusione
Come confermare un prompt in PowerShell

L’idea generale dietro il prompt di conferma è creare un’opzione per passare tra diverse azioni. Ad esempio, quando l’utente sceglie , lo script dovrebbe continuare, e quando l’utente seleziona No, lo script dovrebbe essere terminato.

PowerShell può automaticamente chiedere conferma all’utente prima di eseguire qualsiasi azione utilizzando l’interruttore -Confirm. Questo tutorial introdurrà diversi metodi per chiedere conferma agli utenti affinché qualsiasi azione proceda in PowerShell.

Usa l’interruttore -Confirm per il prompt di conferma in PowerShell

PowerShell ha un insieme di variabili di preferenza che influenzano il suo ambiente operativo e consentono di personalizzare il suo comportamento. $ConfirmPreference è una delle variabili di preferenza che determina se PowerShell ti chiede automaticamente conferma prima di eseguire un cmdlet o una funzione.

Aiuta a chiedere conferma prima di eseguire cmdlet o funzioni a basso, medio o alto rischio. Poiché la maggior parte dei cmdlet e delle funzioni è di rischio medio, non chiede conferma se il valore della variabile è impostato su High.

$ConfirmPreference

Output:

High

Devi usare l’interruttore -Confirm al comando per chiedere conferma all’utente. Impone al comando di visualizzare il prompt di conferma in PowerShell.

Un modo più semplice per utilizzare l’interruttore -Confirm sarebbe usarlo nel cmdlet Remove-Item, che può produrre un’azione di conferma in un comando più semplice. Il seguente comando mostra un esempio del suo utilizzo.

Comando:

Remove-Item test.txt -Confirm

Output:

Confirm
Are you sure you want to perform this action?
Performing the operation "Remove File" on target "C:\Users\rhntm\test.txt".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): N

Nell’output, l’interruttore -Confirm costringe PowerShell a visualizzare un prompt di conferma. Questo metodo è semplice e ideale per scenari in cui si desidera chiedere all’utente una semplice conferma 'Sì' o 'No'.

Nell’interfaccia grafica di PowerShell, apparirà così.

conferma richiesta di cambio in powershell

Usa l’istruzione if per il prompt di conferma in PowerShell

Puoi anche usare l’istruzione if e fornire le condizioni per continuare per gli utenti. Ad esempio, il seguente comando chiede conferma all’utente se vogliono continuare.

Comando:

$confirmation = Read-Host "Do you want to continue?"
if ($confirmation -eq 'y') {
    Write-Host "Welcome to DelftStack."
}

Output:

Do you want to continue?: y
Welcome to DelftStack.

Il cmdlet Read-Host viene utilizzato per leggere l’input da un utente e memorizzare l’input nella variabile $confirmation. L’istruzione if verifica se l’input dell’utente ($confirmation) è uguale a 'y', e se vero, esegue l’azione specificata.

Questo approccio fornisce opzioni aggiuntive per personalizzare il messaggio mostrato all’utente e cosa succede quando effettuano una scelta.

Usa il metodo PromptForChoice() per il prompt di conferma in PowerShell

In PowerShell, puoi anche chiedere conferma agli utenti utilizzando il metodo PromptForChoice(). Mostra una finestra di dialogo che consente all’utente di selezionare un’opzione da un insieme di opzioni e procedere con l’azione in base alle loro scelte.

Il seguente comando è un esempio che chiede un input Sì/No a un utente. Definiamo $title, $question e $choices per il prompt di conferma.

Comando:

$title = 'Confirm'
$question = 'Do you want to continue?'
$choices = '&Yes', '&No'

$decision = $Host.UI.PromptForChoice($title, $question, $choices, 1)
if ($decision -eq 0) {
    Write-Host 'Your choice is Yes.'
}
else {
    Write-Host 'Your choice is No.'
}

Questa riga di codice $decision = $Host.UI.PromptForChoice($title, $question, $choices, 1) presenta una finestra di dialogo all’utente utilizzando il metodo PromptForChoice(). Nell’istruzione if, verifica se il valore memorizzato nella variabile $decision è uguale a 0 (l’indice della prima scelta nell’array $choices).

1° Output:

Confirm
Do you want to continue?
[Y] Yes  [N] No  [?] Help (default is "N"): Yes
Your choice is Yes.

Nel 1° output, l’utente seleziona "Sì". Di conseguenza, l’output "La tua scelta è Sì." viene stampato.

2° Output:

Confirm
Do you want to continue?
[Y] Yes  [N] No  [?] Help (default is "N"): No
Your choice is No.

Nel 2° output, l’utente seleziona "No", e il secondo comando all’interno delle parentesi verrà eseguito. Pertanto, "La tua scelta è No." viene stampato.

Questo metodo offre un’esperienza di conferma più interattiva e personalizzabile, rendendolo adatto a scenari complessi.

Se esegui lo script sopra nella versione GUI di PowerShell, puoi visualizzare la finestra di dialogo di conferma.

PromptForChoice conferma prompt in powershell

Usa approcci basati su funzioni per il prompt di conferma in PowerShell

Puoi creare funzioni personalizzate di PowerShell che includono la logica di conferma. Questo consente di racchiudere la logica di conferma all’interno delle funzioni e riutilizzarle nei tuoi script.

Comando:

Function Confirm-Action {
    param (
        [string]$Message,
        [scriptblock]$Action
    )
    $confirmation = Read-Host $Message
    if ($confirmation -eq 'y') {
        & $Action
    }
}

Confirm-Action -Message "Do you want to continue?" -Action {
    Write-Host "Action executed."
}

La riga Function Confirm-Action { ... } definisce una funzione di PowerShell chiamata Confirm-Action. La funzione accetta due parametri: $Message e $Action.

Questa riga, $confirmation = Read-Host $Message, richiede all’utente di fornire un input utilizzando il cmdlet Read-Host e memorizza l’input nella variabile $confirmation. Il parametro $Message specifica il messaggio visualizzato all’utente.

L’istruzione if verifica se l’input dell’utente memorizzato in $confirmation è uguale al carattere 'y'.

Output:

Do you want to continue?: y
Action executed.

Quando esegui il comando, chiede conferma all’utente ("Vuoi continuare?") ed esegue l’azione con il messaggio "Azione Eseguita" se l’utente sceglie 'y'.

Conclusione

In PowerShell, i prompt di conferma sono essenziali per il controllo e la sicurezza dell’utente. In questo articolo, abbiamo esplorato quattro metodi per implementare i prompt di conferma; l’interruttore -Confirm semplifica i prompt di base 'Sì/No', l’istruzione if con Read-Host consente la personalizzazione, il metodo PromptForChoice() fornisce opzioni interattive avanzate e l’uso di approcci basati su funzioni per creare una funzione personalizzata che include la logica di conferma, assicurando interazioni efficienti e sicure degli utenti negli script.

Speriamo che questo tutorial ti aiuti a capire come chiedere agli utenti una conferma 'Sì/No' in PowerShell.

Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website