Búsqueda de sitios web

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


¿Alguna vez se ha preguntado: "¿Cuál es la mejor manera de finalizar 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? ¡Pues estás de suerte!

En esta guía, tendrá respuestas a estas preguntas y más. Conozca todas las formas de salir de una secuencia de comandos o sesión de PowerShell.

¡Preparémonos para finalizar algunas sesiones y scripts de PowerShell!

Requisitos previos

Para seguir adelante, asegúrese de tener Windows PowerShell o PowerShell Core instalado en su máquina. Los ejemplos de este artículo utilizarán PowerShell 7.1.4.

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

Profundicemos en este tutorial y primero cubramos la palabra clave exit, una de las muchas palabras reservadas en PowerShell. Una palabra reservada es un conjunto de caracteres integrados en PowerShell que realiza alguna acción. Para la palabra clave exit, la acción hace que PowerShell salga de una sesión de PowerShell.

¡Vamos a practicar! Abra una sesión de consola PowerShell, escriba exit y presione la tecla Intro. La consola de PowerShell se cerrará inmediatamente.

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

Copie y pegue el código siguiente en el bloc de notas y guarde el script como test.ps1 en el directorio C:\Temp. Ejecute el archivo de secuencia de comandos de PowerShell ejecutando el comando .\text.ps1 como se muestra en la siguiente captura de pantalla. Tenga en cuenta que, en lugar de que PowerShell cierre la sesión, PowerShell finaliza el script y devuelve el control al indicador de la sesión actual de PowerShell.

# test.ps1
Write-Host "Quick! Read this before the PowerShell session closes!!"
Start-Sleep -Seconds 2
Exit

Recibir y proporcionar comentarios con códigos de salida

El comando exit es útil para situaciones en las que necesita un script o función para ejecutar algún código y salir. Pero no recibe 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:

  • 0 - significa éxito: terminación normal
  • 1 - significado de fracaso: un lanzamiento no atrapado

PowerShell no lo restringe a 0 y 1 como códigos de salida. PowerShell le permite devolver códigos de salida personalizados, siempre que sean números enteros.

El rango de valores para el código de salida depende de la plataforma. En Windows, se permiten todos los enteros con signo de 32 bits. En Unix, sólo se permiten enteros positivos de 8 bits.

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

Copie y pegue el código siguiente en el archivo test.ps1 existente y ejecute el script con el comando .\Test.ps1. Verifique el contenido de la variable $LASTEXITCODE. Al decirle a PowerShell que saliera con un código de salida 55, lo hizo, como puede ver a continuación.

Function foo {
    Write-Output "This foo function will be shown"
    Exit 55 # < -- Using custom exit code
}

foo

Romper bucles con pausa

Habrá momentos en los que el comportamiento 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 una ruptura, el código continúa ejecutándose en la siguiente iteración.

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

Practiquemos cómo romper bucles. A continuación puede ver un fragmento de código con un bucle for. El bucle for se repetiría diez veces si no fuera por el break que contiene. La palabra clave break se activará cuando el iterador sea igual a ocho. Una vez que PowerShell encuentra la palabra clave break, detiene el ciclo.

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

Puede ver a continuación que PowerShell detiene el bucle cuando i es igual a 8. El código nunca llega a 9. Ha salido exitosamente de un bucle for.

Redirigir la ejecución del código con retorno

La palabra clave return es ligeramente diferente de las palabras clave anteriores ya que no cierra ni interrumpe los comandos. Esta palabra clave redirige la ejecución del código. Devuelve la ejecución a su llamada y le permite devolver valores. Y no sólo números enteros, como exit, claro está. ¡Puedes devolver cualquier tipo! Estos comportamientos hacen que la palabra clave return sea más versátil que las palabras clave anteriores.

Veámoslo en acción con un ejemplo: crear una función para emparejar palabras. Copie el siguiente código en su sesión de PowerShell:

function WordPairing ($a,$b) {

	return "$a" + "$b" # <-- Combining two words into one word

}

$output = WordPairing taco cat

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

Observe cómo el valor que está devolviendo la función en la salida.

Redirige el $output generado por la función WordPairing de regreso al lugar donde se llama $output.

Conclusión

En esta guía, ha aprendido diferentes formas de finalizar sesiones y scripts de PowerShell. Cada método se basa en una palabra clave específica. Cada palabra clave tiene un caso de uso particular. Cuando se usan apropiadamente, cada una de estas palabras clave le brinda un enorme control sobre lo que hace su script.

Ahora que conoce diferentes formas de salir de sus sesiones de PowerShell, ¿cómo planea mejorar sus scripts con este nuevo conocimiento?

Artículos relacionados