Percebo que este é um post antigo, mas me vejo voltando muito a esse tópico, pois é um dos principais resultados de pesquisa ao pesquisar esse tópico. No entanto, sempre deixo mais confuso do que quando cheguei devido às informações conflitantes. Em última análise, eu sempre tenho que realizar meus próprios testes para descobrir isso. Então desta vez vou postar minhas descobertas.
Saída: Isso "sairá" do contexto em execução no momento. Se você chamar esse comando a partir de um script, ele sairá do script. Se você chamar esse comando do shell, ele sairá do shell.
Se uma função chamar o comando Exit, ela sairá do contexto em que estiver sendo executada. Portanto, se essa função for chamada apenas de dentro de um script em execução, ela será encerrada. No entanto, se o seu script apenas declarar a função para que possa ser usada no shell atual e você a executar a partir do shell, ele sairá do shell porque o shell é o contexto no qual a função que contém o Exit
comando está sendo executada.
Nota: Por padrão, se você clicar com o botão direito do mouse em um script para executá-lo no PowerShell, assim que o script for executado, o PowerShell será fechado automaticamente. Isso não tem nada a ver com o Exit
comando ou qualquer outra coisa no seu script. É apenas um comportamento padrão do PowerShell para scripts sendo executados usando este método específico de execução de um script. O mesmo vale para arquivos em lotes e para a janela Linha de Comando.
Retorno: Isso retornará ao ponto de chamada anterior. Se você chamar esse comando a partir de um script (fora de qualquer função), ele retornará ao shell. Se você chamar esse comando do shell, ele retornará ao shell (que é o ponto de chamada anterior para um único comando executado no shell). Se você chamar esse comando de uma função, ele retornará para onde quer que a função tenha sido chamada.
A execução de qualquer comando após o ponto de chamada para o qual ele é retornado continuará a partir desse ponto. Se um script for chamado a partir do shell e ele contiver o Return
comando fora de qualquer função, quando retornar ao shell, não haverá mais comandos a serem executados, fazendo com que o Return
usado dessa maneira seja essencialmente o mesmo que Exit
.
Interromper: Isso interrompe os loops e alterna os casos. Se você chamar esse comando enquanto não estiver em loop ou alternar entre maiúsculas e minúsculas, o script será interrompido. Se você chamar Break
dentro de um loop aninhado dentro de um loop, ele sairá apenas do loop no qual foi chamado.
Há também um recurso interessante de Break
onde você pode prefixar um loop com um rótulo e, em seguida, pode interromper esse loop rotulado, mesmo que o Break
comando seja chamado dentro de vários grupos aninhados dentro desse loop rotulado.
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
}