Cómo usar el comando de salida PowerShell y sus amigos

¿Alguna vez te has preguntado: “¿Cuál es la mejor manera de terminar un script o salir de un comando en PowerShell?” ¿Se cerrará la sesión de PowerShell con el comando de salida de PowerShell? ¿Cómo devolver códigos de salida personalizados? ¡Bueno, estás de suerte!

En esta guía, encontrarás respuestas a estas preguntas y más. Aprende sobre todas las formas de salir de un script o sesión de PowerShell.

¡Prepárate para terminar algunas sesiones y scripts de PowerShell!

Prerrequisitos

Para seguir los pasos, asegúrate de tener instalado Windows PowerShell o PowerShell Core en tu máquina. Los ejemplos en este artículo utilizarán PowerShell 7.1.4.

Finalizando la consola y los scripts con el comando de salida de PowerShell

Adentrémonos en este tutorial y empecemos por cubrir la palabra clave exit, una de las muchas palabras reservadas en PowerShell. Una palabra reservada es un conjunto de caracteres incorporados en PowerShell que realiza alguna acción. Para la palabra clave exit, la acción es hacer que PowerShell cierre una sesión de PowerShell.

¡Vamos a practicar! Abre una sesión de consola de PowerShell, escribe exit y presiona la tecla Enter. La consola de PowerShell se cerrará inmediatamente.

Esta palabra clave también puede salir de un script en lugar de la sesión de consola. Incluir la palabra clave exit en un script y exit termina solo el script y no toda la sesión de consola desde donde se ejecuta el script.

Copia y pega el siguiente código en el bloc de notas y guarda el script como test.ps1 en el directorio C:\Temp. Ejecuta el archivo de script de PowerShell ejecutando el comando .\text.ps1 como se muestra en la captura de pantalla a continuación. Observa que en lugar de PowerShell cerrar la sesión, PowerShell termina el script y devuelve el control al símbolo del símbolo del símbolo de la sesión de PowerShell actual.

# test.ps1
Write-Host "Quick! Read this before the PowerShell session closes!!"
Start-Sleep -Seconds 2
Exit
The exit keyword stopped the script execution, but the console is still running

Recibiendo y Proporcionando Comentarios con Códigos de Salida

El comando exit es útil para situaciones en las que necesitas que un script o función ejecute algún código y salga. Pero no estás recibiendo ninguna indicación de si el script se ejecutó correctamente o no.

Cuando PowerShell ejecuta el último comando en un script, almacena el código de salida de ese último comando en la variable $LASTEXITCODE .

Hay dos códigos de salida predeterminados:

PowerShell no te restringe a 0 y 1 como códigos de salida. PowerShell te permite devolver códigos de salida personalizados, siempre y cuando sean enteros.

El rango de valores para el código de salida depende de la plataforma. En Windows, se permiten cualquier entero firmado de 32 bits. En Unix, solo se permiten enteros positivos de 8 bits.

Para salir de PowerShell con un código de salida personalizado, puedes proporcionar el código de salida como argumento para la palabra clave exit.

Copia y pega el siguiente código en el archivo existente test.ps1 y ejecuta el script con el comando .\Test.ps1. Verifica el contenido de la variable $LASTEXITCODE. Al indicarle a PowerShell que salga con un código de salida 55, lo hizo, como puedes ver a continuación.

Function foo {
    Write-Output "This foo function will be shown"
    Exit 55 # < -- Usando código de salida personalizado
}

foo
Returning a custom exit code

Saliendo de bucles con Break

Habrá momentos en los que el comportamiento de exit no sea aceptable, como salir de una función. Veamos cómo ayuda la palabra clave break.

La palabra clave break hace que PowerShell detenga un bucle. Después de un break, el código continúa ejecutándose en la siguiente iteración.

Los descansos son útiles en los bucles de PowerShell como el foreach, while, do-while y las declaraciones switch porque puedes controlar dónde se detendrá tu código antes de que se complete.

Practiquemos salir de los bucles. A continuación, puedes ver un fragmento de código con un bucle for. El bucle for iteraría diez veces si no fuera por el break dentro de él. La palabra clave break se activará cuando el iterador sea igual a ocho. Una vez que PowerShell encuentra la palabra clave break, detiene el bucle.

for($i=1; $i -le 10; $i++) {
	if($i -eq 8) { break }
	$i
}

A continuación, puedes ver que PowerShell detiene el bucle cuando i es igual a 8. El código nunca llega a 9. Has salido con éxito de un bucle for.

Breaking a for loop

Redirigir la ejecución del código con Return

El return la palabra clave es ligeramente diferente de las palabras clave anteriores ya que no sale ni rompe comandos. Esta palabra clave redirige la ejecución del código. Devuelve la ejecución a su llamada mientras te permite devolver valores. Y no solo enteros, como exit, ¡ten en cuenta! ¡Puedes devolver cualquier tipo! Estos comportamientos hacen que la palabra clave return sea más versátil que las palabras clave anteriores.

Vamos a verlo en acción con un ejemplo: construyendo una función para emparejar palabras. Copia el código a continuación en tu sesión de PowerShell:

function WordPairing ($a,$b) {

	return "$a" + "$b" # <-- Combinando dos palabras en una palabra

}

$output = WordPairing taco cat

Write-Output "$output is a strange pairing of words."

Nota cómo el valor que estás devolviendo de la función en la salida.

Redirecting code execution with the return keyword

Rediriges el $output generado por la función WordPairing de vuelta a donde se llama el $output.

Conclusión

En esta guía, has aprendido diferentes formas de terminar sesiones y scripts de PowerShell. Cada método depende de una palabra clave específica. Cada palabra clave tiene un caso de uso particular. Cuando se usan apropiadamente, cada una de estas palabras clave te da un enorme control sobre lo que hace tu script.

Ahora que conoces diferentes formas de salir de tus sesiones de PowerShell, ¿cómo planeas mejorar tus scripts con este conocimiento recién adquirido?

Source:
https://adamtheautomator.com/powershell-exit/