Cómo confirmar el aviso en PowerShell
-
Use el interruptor
-Confirm
para el aviso de confirmación en PowerShell -
Use la declaración
if
para el aviso de confirmación en PowerShell -
Use el método
PromptForChoice()
para el aviso de confirmación en PowerShell - Use enfoques basados en funciones para el aviso de confirmación en PowerShell
- Conclusión

La idea general detrás del aviso de confirmación es crear una opción para alternar entre diferentes acciones. Por ejemplo, cuando el usuario elige Sí
, el script debe continuar, y cuando el usuario selecciona No
, el script debe cerrarse.
PowerShell puede solicitar automáticamente confirmación al usuario antes de realizar cualquier acción utilizando el interruptor -Confirm
. Este tutorial introducirá diferentes métodos para preguntar a los usuarios por confirmación para que cualquier acción proceda en PowerShell.
Use el interruptor -Confirm
para el aviso de confirmación en PowerShell
PowerShell tiene un conjunto de variables de preferencia que afectan su entorno de operación y permiten personalizar su comportamiento. $ConfirmPreference
es una de las variables de preferencia que determina si PowerShell te solicita automáticamente confirmación antes de ejecutar un cmdlet o función.
Ayuda a solicitar confirmación antes de ejecutar cmdlets o funciones con un riesgo bajo, medio o alto. Dado que la mayoría de los cmdlets y funciones son de riesgo medio, no solicita confirmación si el valor de la variable está configurado en Alto
.
$ConfirmPreference
Salida:
High
Debes usar el interruptor -Confirm
en el comando para solicitar confirmación al usuario. Obliga al comando a mostrar el aviso de confirmación en PowerShell.
Una manera más simple de usar el interruptor -Confirm
sería utilizándolo en el cmdlet Remove-Item
, que puede producir una acción de confirmación en un comando más simple. El siguiente comando muestra un ejemplo de su uso.
Comando:
Remove-Item test.txt -Confirm
Salida:
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
En la salida, el interruptor -Confirm
obliga a PowerShell a mostrar un aviso de confirmación. Este método es directo e ideal para escenarios donde deseas solicitar al usuario una confirmación simple de 'Sí'
o 'No'
.
En la GUI de PowerShell, se verá así.
Use la declaración if
para el aviso de confirmación en PowerShell
También puedes usar la declaración if
y proporcionar las condiciones para continuar para los usuarios. Por ejemplo, el siguiente comando pregunta al usuario si desea continuar.
Comando:
$confirmation = Read-Host "Do you want to continue?"
if ($confirmation -eq 'y') {
Write-Host "Welcome to DelftStack."
}
Salida:
Do you want to continue?: y
Welcome to DelftStack.
El cmdlet Read-Host
se utiliza para leer la entrada de un usuario y almacenar la entrada en la variable $confirmation
. La declaración if
verifica si la entrada del usuario ($confirmation
) es igual a 'y'
, y si es verdadera, ejecuta la acción especificada.
Este enfoque proporciona opciones adicionales para personalizar el mensaje mostrado al usuario y lo que sucede cuando toman una decisión.
Use el método PromptForChoice()
para el aviso de confirmación en PowerShell
En PowerShell, también puedes solicitar a los usuarios confirmación utilizando el método PromptForChoice()
. Muestra un diálogo que permite al usuario seleccionar una opción de un conjunto de opciones y proceder con la acción de acuerdo con sus elecciones.
El siguiente comando es un ejemplo que solicita una entrada de Sí/No
a un usuario. Definimos $title
, $question
y $choices
para el aviso de confirmación.
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.'
}
Esta línea de código $decision = $Host.UI.PromptForChoice($title, $question, $choices, 1)
presenta un cuadro de diálogo al usuario utilizando el método PromptForChoice()
. En la declaración if
, verifica si el valor almacenado en la variable $decision
es igual a 0
(el índice de la primera elección en el array $choices
).
1ª Salida:
Confirm
Do you want to continue?
[Y] Yes [N] No [?] Help (default is "N"): Yes
Your choice is Yes.
En la 1ª salida, el usuario selecciona "Sí"
. Como resultado, se imprime la salida "Tu elección es Sí."
2ª Salida:
Confirm
Do you want to continue?
[Y] Yes [N] No [?] Help (default is "N"): No
Your choice is No.
En la 2ª salida, el usuario selecciona "No"
, y se ejecutará el segundo comando dentro de los corchetes. Por lo tanto, se imprime "Tu elección es No."
Este método ofrece una experiencia de confirmación más interactiva y personalizable, lo que lo hace adecuado para escenarios complejos.
Si ejecutas el script anterior en la versión GUI de PowerShell, puedes ver el cuadro de diálogo de confirmación.
Use enfoques basados en funciones para el aviso de confirmación en PowerShell
Puedes crear funciones personalizadas de PowerShell que incluyan lógica de confirmación. Esto te permite encapsular la lógica de confirmación dentro de funciones y reutilizarlas en todo tu 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 línea Function Confirm-Action { ... }
define una función de PowerShell llamada Confirm-Action
. La función toma dos parámetros: $Message
y $Action
.
Esta línea, $confirmation = Read-Host $Message
, solicita la entrada del usuario utilizando el cmdlet Read-Host
y almacena la entrada en la variable $confirmation
. El parámetro $Message
especifica el mensaje mostrado al usuario.
La declaración if
verifica si la entrada del usuario almacenada en $confirmation
es igual al carácter 'y'
.
Salida:
Do you want to continue?: y
Action executed.
Cuando ejecutas el comando, solicita al usuario confirmación ("¿Deseas continuar?"
) y ejecuta la acción con el mensaje "Acción Ejecutada"
si el usuario elige 'y'
.
Conclusión
En PowerShell, los avisos de confirmación son esenciales para el control y la seguridad del usuario. En este artículo, exploramos cuatro métodos para implementar avisos de confirmación; el interruptor -Confirm
simplifica los avisos básicos de 'Sí/No'
, la declaración if
con Read-Host
permite la personalización, el método PromptForChoice()
proporciona opciones interactivas avanzadas, y utilizar enfoques basados en funciones para crear una función personalizada que incluya lógica de confirmación, asegurando interacciones de usuario eficientes y seguras en los scripts.
Esperamos que este tutorial te ayude a entender cómo solicitar a los usuarios una confirmación de 'Sí/No'
en PowerShell.