Cómo finalizar correctamente un script con el comando de salida de PowerShell
La función Exit de PowerShell es una función peculiar pero muy útil, sobre todo para acortar los scripts. Básicamente, le dice a PowerShell: «Basta por ahora, termínalo», ya sea que hayas terminado con un script, una función o incluso cerrando toda la ventana de la consola. A veces, los scripts presentan errores o condiciones que impiden continuar; es entonces cuando se llama a Exit. Pero la cuestión es que no todo el mundo entiende del todo cómo ni cuándo usarla, sobre todo si son nuevos. O bien, se dan cuenta de que se comporta de forma ligeramente diferente según el contexto, lo que puede resultar confuso. Así que esto podría ayudar a aclarar esto un poco, con ejemplos reales y algunos problemas.
Cómo usar la salida de PowerShell correctamente
Método 1: Salir de un script cuando las cosas salen mal o se cumplen las condiciones
Siempre que un script encuentre un error inesperado o alcance una condición en la que continuar podría causar problemas, puedes usar un Exit. Es como decir: «No, detente aquí».Cuando el script llama a Exit, PowerShell detiene todo y envía un código de salida al sistema operativo. Esto es útil si el script se ejecuta como parte de un lote o tarea mayor y quieres indicar si la ejecución fue correcta ( Exit 0) o si falló (algo como Exit 1).
Entonces, un caso de uso típico podría verse así:
# Check for an error condition if ($errorCondition) { Write-Host "Oh no, error detected. Exiting..." Exit 1 # Standard error code } Write-Host "All good, continuing..."
En algunos casos, funciona perfectamente en una configuración, pero en otra, el script podría no finalizar inmediatamente, ya que PowerShell se comporta de forma diferente en los IDE o hosts específicos. Aun así, en la línea de comandos suele ser fiable.
Método 2: Salir de una función o de todo el script
Aquí es donde la cosa se complica. Si se llama Exitdentro de una función, se termina todo el script, no solo la función. Por lo tanto, si se tiene una función para validación y algo falla, la llamada Exitterminará todo. No siempre es lo que se desea, pero a veces es útil. Por ejemplo:
function Check-User { param($user) if ($user -eq "") { Write-Host "No user supplied. Exiting all scripts now..." Exit 1 } Write-Host "User=$user" } Check-User -user "" Write-Host "This line won't run if user was empty."
Recuerde, sin embargo, que en los scripts que se llaman desde otros scripts o tareas programadas, Exit también detendrá el script principal, así que úselo con cuidado.
Método 3: Cerrar la consola de PowerShell
Y luego está el gran final: Exitcerrar la terminal de PowerShell. Al igual que en el símbolo del sistema, al ejecutar Exit 0, PowerShell simplemente se cierra. Resulta útil si el script está destinado a ser lo último que se ejecute. Por ejemplo:
# Finish cleanly Exit 0 # Success exit code
Eso cerrará la ventana sin dejar ningún proceso colgado. Claro que probablemente no quieras eso en sesiones interactivas a menos que estés programando algún tipo de apagado o limpieza automática.¿Pero en servidores o tareas programadas? No es una mala manera de terminar con elegancia.
Consejo adicional: Diferencias entre salida, descanso y regreso
Para tu información, PowerShell también tiene Breaky Return.Breaksolo detiene bucles, así que si necesitas salir de un foro whileantes, es tu turno.Returnes para funciones, así que puedes devolver valores o simplemente detener esa función antes de tiempo. Es un poco raro, pero conviene mantenerlos separados, ya que tienen propósitos diferentes.
Honestamente, el truco está Exiten entender que es un gran martillo: lo detiene todo.Úsalo con cuidado, o podrías terminar un script o una sesión prematuramente. Porque, claro, Windows tiene que hacerlo más difícil de lo necesario.
Artículos relacionados
¿Te resultó útil este artículo?