Me doy cuenta de que esta es una publicación antigua, pero me encuentro volviendo mucho a este hilo, ya que es uno de los principales resultados de búsqueda al buscar este tema. Sin embargo, siempre me dejo más confundido que cuando vine debido a la información conflictiva. En última instancia, siempre tengo que realizar mis propias pruebas para resolverlo. Así que esta vez publicaré mis hallazgos.
Salir: Esto "saldrá" del contexto actual. Si llama a este comando desde un script, saldrá del script. Si llama a este comando desde el shell, saldrá del shell.
Si una función llama al comando Salir, saldrá del contexto en el que se esté ejecutando. Entonces, si esa función solo se llama desde un script en ejecución, saldrá de ese script. Sin embargo, si su script simplemente declara la función para que pueda usarse desde el shell actual y ejecuta esa función desde el shell, saldrá del shell porque el shell es el contexto en el que Exit
se ejecuta la función que contiene el comando.
Nota: De forma predeterminada, si hace clic con el botón derecho en un script para ejecutarlo en PowerShell, una vez que el script se haya ejecutado, PowerShell se cerrará automáticamente. Esto no tiene nada que ver con el Exit
comando o cualquier otra cosa en su secuencia de comandos. Es solo un comportamiento predeterminado de PowerShell para los scripts que se ejecutan utilizando este método específico de ejecutar un script. Lo mismo es cierto para los archivos por lotes y la ventana de línea de comandos.
Regresar: Esto volverá al punto de llamada anterior. Si llama a este comando desde un script (fuera de las funciones), volverá al shell. Si llama a este comando desde el shell, volverá al shell (que es el punto de llamada anterior para un solo comando ejecutado desde el shell). Si llama a este comando desde una función, volverá a donde se llamó la función.
La ejecución de cualquier comando después del punto de llamada al que se devuelve continuará desde ese punto. Si se llama a un script desde el shell y contiene el Return
comando fuera de cualquier función, cuando regrese al shell no hay más comandos para ejecutar, por lo que un Return
uso de esta manera es esencialmente el mismo que Exit
.
Descanso: Esto saldrá de los bucles y cambiará los casos. Si llama a este comando mientras no está en un bucle o caso de cambio, saldrá del guión. Si llama Break
dentro de un bucle que está anidado dentro de un bucle, solo saldrá del bucle en el que se llamó.
También hay una característica interesante de Break
dónde puede prefijar un bucle con una etiqueta y luego puede salir de ese bucle etiquetado incluso si el Break
comando se llama dentro de varios grupos anidados dentro de ese bucle etiquetado.
While ($true) {
# Code here will run
:myLabel While ($true) {
# Code here will run
While ($true) {
# Code here will run
While ($true) {
# Code here will run
Break myLabel
# Code here will not run
}
# Code here will not run
}
# Code here will not run
}
# Code here will run
}