Controle de fluxo
Controle de fluxo refere-se a como o código é executado no console ou script. O termo descreve o fluxo que o código segue e como você controla esse fluxo. Há vários constructos que ajudam a controlar o fluxo. O código pode executar todas as instruções ou apenas algumas delas. Ele também pode repetir certas instruções até atender a uma determinada condição.
Vamos examinar esses constructos de controle de fluxo para ver o que podem fazer:
Limpar a entrada. Se você usa parâmetros em um script, precisa garantir que eles tenham valores razoáveis para que o script funcione conforme esperado. Escrever código para gerenciar esse processo é chamado de limpar a entrada.
Controlar o fluxo de execução. A técnica anterior garante que você receba dados de entrada razoáveis e corretos. Esta técnica está relacionada à decisão de como executar o código. Os valores definidos podem determinar qual grupo de instruções é executado.
Iterar nos dados. Às vezes, os dados assumem a forma de uma matriz, que é uma estrutura de dados que contém muitos itens. Para esses dados, talvez seja necessário examinar cada item e executar uma operação para cada um deles. Muitos constructos no PowerShell podem ajudar você com esse processo.
Observação
A iteração em matrizes está fora do escopo deste módulo. Há muitos constructos para lidar com o controle de fluxo no PowerShell. Não podemos citar todos eles, mas falaremos de alguns importantes que você provavelmente encontrará nos scripts que lê ou escreve.
Gerenciar o fluxo de entrada e de execução usando If
, ElseIf
e Else
Use um constructo If
para determinar se uma expressão é True
ou False
. Dependendo dessa determinação, você pode executar a instrução definida pelo constructo If
. A sintaxe de If
é semelhante a:
If (<expression that evaluates to True or False>)
{
# Statement that runs only if the preceding expression is $True.
}
Operadores
O PowerShell tem dois parâmetros internos para determinar se uma expressão é True
ou False
:
$True
indica que a expressão éTrue
.$False
indica que a expressão éFalse
.
Você pode usar operadores para determinar se uma expressão é True
ou False
. Há alguns operadores. A ideia básica, geralmente, é determinar se algo no lado esquerdo do operador corresponde a algo no lado direito, considerando a condição do operador. Um operador pode expressar se uma coisa é igual a outra, maior do que outra ou se corresponde a uma expressão regular.
Veja um exemplo de como usar um operador. O operador -le
determina se o valor à esquerda dele é menor ou igual ao valor à direita:
$Value = 3
If ($Value -le 0)
{
Write-Host "Is negative"
}
Esse código não exibe nada porque a expressão é avaliada como False
. O valor 3 é claramente positivo.
Else
O constructo If
executará instruções somente se elas forem avaliadas como True
. E se você quiser lidar com casos em que elas são avaliadas como False
? Nesse caso, você usa o constructo Else
. If
expressa "se esse caso específico for verdadeiro, execute esta instrução". Else
não assume uma expressão. Ele captura todos os casos em que a cláusula If
é avaliada como False
. Quando If
e Else
são combinados, o código executa as instruções em um dos dois constructos. Vamos modificar o código anterior para incluir um constructo Else
:
$Value = 3
If ($Value -le 0)
{
Write-Host "Is negative"
} Else {
Write-Host "Is Positive"
}
Como colocamos Else
ao lado da chave final para If
, criamos um constructo unido que funciona como apenas um. Se você executar o código no console, verá que Is Positive
é impresso. Isso ocorre porque If
é avaliado como False
, mas Else
é avaliado como True
. Sendo assim, Else
imprime sua instrução.
Observação
Você só poderá usar Else
se um constructo If
estiver definido imediatamente acima dele.
ElseIf
If
e Else
funcionam muito bem para englobar todos os caminhos que o código pode seguir. ElseIf
é outro constructo que pode ser útil. ElseIf
deve ser usado com If
. Ele diz "a expressão neste constructo será avaliada se a instrução If
anterior for avaliada como False
". Como If
, ElseIf
pode usar uma expressão, portanto, ajuda a pensar em ElseIf
como um If secundário.
Veja um exemplo que usa ElseIf
:
# _FullyTax.ps1_
# Possible values: 'Minor', 'Adult', 'Senior Citizen'
$Status = 'Minor'
If ($Status -eq 'Minor')
{
Write-Host $False
} ElseIf ($Status -eq 'Adult') {
Write-Host $True
} Else {
Write-Host $False
}
É possível escrever esse código de uma forma mais compacta, mas dessa forma ele demonstra o uso de ElseIf
. Ele mostra como If
é avaliado primeiro, depois ElseIf
e então Else
.
Observação
Assim como ocorre com Else
, você não poderá usar ElseIf
se não definir um If
acima dele.