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

L’idea generale dietro il prompt di conferma è creare un’opzione per passare tra diverse azioni. Ad esempio, quando l’utente sceglie Sì
, 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ì.
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.
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.