Búsqueda de sitios web

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.

Artículos relacionados