PowerShell: diferencia entre pausa, retorno y salida
En esta publicación de blog, le mostraré la diferencia de tres declaraciones de PowerShell que se usan ampliamente en los scripts de PowerShell. Me refiero a Descanso, Regreso y Salida. Usaré tres ejemplos para la explicación. Entremos.
Romper
La instrucción break proporciona una forma de salir del bloque de control actual (¡bucle!). Referencia técnica:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_break?view=powershell-7
¿Qué significa esto en un caso específico? Echemos un vistazo a un ejemplo. Aquí lo tienes.
function Test-Break {
$i = 0
Clear-Host
while ($true)
{
if (($i+=1) -ge 3)
{
break # exits the loop and passes over to line 13
}
Write-Output $i
}
Write-Output "Finished testing break." # is displayed - out of loop
}
¡Notalínea 9! Cuando ejecute Test-Break verá que el bucle se detiene en 2 Y que la línea 13 se ejecuta porque la instrucción break solo sale del bucle y pasa al código fuera del bucle. Aquí está el resultado:
Bueno, eso me lleva a la declaración de devolución.
Devolver
Según la referencia de Microsoft: Sale del alcance actual, que puede ser una función, un script o un bloque de script.
Enlace: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_return?view=powershell-7
Bien, tomemos otro ejemplo.
function Test-Return {
Clear-Host
$i = 0
while ($true)
{
if (($i += 1) -ge 3)
{
return # terminates entire function
}
Write-Output $i ### is not displayed if $i is 3 or higher
}
Write-Output "Finished testing return." # is NOT displayed - out of function
}
En este ejemplo, return termina la función actual, lo que significa que las líneas 12 y 14 no se procesan y, por lo tanto, no se muestran. Aquí está el resultado:
Esto me lleva a mi última declaración: Salir
Salida
Salir finaliza la sesión actual de PowerShell. Tenga en cuenta que esto solo sucederá si ejecuta su script en powershell.exe, pwsh.exe (PowerShell 7) y no en Visual Studio Code.
Aquí hay un ejemplo. La función se detiene al finalizar durante 2 segundos, para que pueda ver dónde se detuvo y finaliza PowerShell.
function Test-Exit {
Clear-Host
$i = 0
while ($true)
{
if (($i += 1) -ge 3)
{
Start-Sleep -Seconds 3
exit # exits the session (close PowerShell window and related process)
}
Write-Output $i
}
}
Si ejecuta Test-Exit, notará que el bucle se detiene en 2 y luego, después de 2 segundos, se cerrará la ventana de PowerShell.
Bien, eso es todo por hoy.
Hasta la próxima.

