Scripts can make decisions. Como? Usando um conceito chamado lógica condicional. O PowerShell if statement e o IF / else constructs são as formas comuns de definir as condições.
quando escreve programas PowerShell, fá-lo com uma tarefa ou tarefas específicas em mente. Mas, uma operação pode ter mais de uma ação possível baseada em uma ou mais condições. Esta situação é onde a construção PowerShell If-Else entra.,
neste artigo, você vai aprender o que a construção PowerShell If-Else é, entender a sua sintaxe e como ela funciona. Você também vai aprender com os exemplos algumas das diferentes maneiras que você pode usar PowerShell If-Else para adicionar tratamento lógico condicional em seus scripts.
tabela de conteúdos
compreender a PowerShell If-Else Syntax
a PowerShell if-else construct avalia uma ou mais expressões condicionais. Abaixo você verá a sintaxe da declaração If. Este estilo às vezes é chamado de controle de fluxo.,
if (<test1>) {<statement list 1>}
como pode ver pela sintaxe acima, cada teste é incluído num parêntesis ()
. Os testes podem fazer uso de diferentes operadores, tais como operadores de comparação e operadores lógicos,
As listas de declarações contêm o código destinado a ser executado se o resultado do teste for verdadeiro.
então, há três possíveis afirmações em um grupo de declaração If. Estas são as declarações de “se”, “ELSEIF” e “ELSE”.,
- a declaração
if
contém o primeiro teste a avaliar, seguido da primeira lista de declarações dentro dos parêntesis curly{}
.The PowerShell if statement is the only statement required to be present. - a declaração
elseif
é onde você adiciona as condições. Você pode adicionar várias declarações ElseIf quando você várias condições. PowerShell irá avaliar cada uma destas condições sequencialmente. - The
else
statement does not accept any condition., A lista de declarações nesta declaração contém o código a executar se todas as condições anteriores testadas são falsas.
compreendendo o fluxo lógico de PowerShell If-Else
para compreender melhor como a PowerShell If-Else funciona, é necessário familiarizar-se com o seu fluxo lógico. O diagrama abaixo ilustra o fluxo básico da PowerShell If-Else.,
Quando a instrução if é executado, o PowerShell é executado através de cada condição de avaliar se o código retorna true ou false. Um resumo do comportamento é abaixo:
- PowerShell avalia a condição no teste 1.
- Se o resultado do teste 1 retornar verdadeiro, o código dentro da lista de instruções If irá correr, então PowerShell sai da instrução If.,
- Se o resultado do teste 1 retornar falso, PowerShell continua a avaliar a condição (teste n) na próxima declaração ElseIf.
- Se o resultado do teste n devolve falso, o PowerShell continua a avaliar a condição (teste n) Na próxima declaração do ElseIf, se existir outra declaração do ElseIf-ou-
- Se o resultado do teste n devolve falso, o código na outra declaração é executado. Então, o PowerShell irá sair da instrução If-or –
- Se o resultado do teste n retorna verdadeiro, o código na instrução ElseIf corre. Então, o PowerShell vai sair da declaração do fi.,
usando a instrução PowerShell If-Else
as secções seguintes são vários exemplos de como usar a instrução PowerShell If-Else ao escrever scripts. As técnicas que você vai aprender podem guiá-lo no uso da declaração If caso você encontrar uma situação real que requer o seu uso.
condição de “If-Else” única
começando com a mais básica é a declaração de ” If ” única. Você deve usar uma única declaração if quando há apenas uma condição para testar.
o exemplo abaixo testa se o valor da variável
é superior a 10., Se o resultado for verdadeiro, então o resultado dizendo "$num is greater than 10"
será exibido na tela. Se o resultado é falso, PowerShell não faz nada porque há apenas uma condição para testar.
$num = 11if ($num -gt 10) { "$num is greater than 10"}
colar o código acima em PowerShell dar-lhe-á o resultado mostrado abaixo.,
Agora, se você deseja adicionar um padrão de “reversão” de ação, ao invés de apenas deixá-PowerShell não fazer nada quando o resultado do teste for falso, você pode adicionar a instrução Else.
no exemplo abaixo, o código na instrução Else será executado se o valor da variável
não for superior a 10.
$num = 9if ($num -gt 10){ "$num is greater than 10"}else{ "$num is NOT greater than 10"}
correr o código modificado em PowerShell dá-lhe o resultado mostrado abaixo.,
Começando com o PowerShell 7.0, uma nova sintaxe para a instrução Se tiver sido introduzida através de um operador ternário. Single If statements can make good use of this new syntax.
Usando o mesmo exemplo acima, é assim que o código se pareceria com o operador ternário.,
$num = 11$num -gt 10 ? "$num is greater than 10" : "$num is NOT greater than 10"
Vários If-Else Condições com ElseIf
Quando há várias condições para avaliar, você precisa adicionar um ou mais instruções ElseIf. Cada instrução ElseIf contém a expressão de teste e seu próprio código para executar.,
O script abaixo, quando executado, irá continuar a pedir um nome de fruta até o CTRL+C
pressionamento de tecla é emitido, ou o usuário insere a letra “X
“.
então, a instrução If irá passar por cada condição em sequência até encontrar uma correspondência. Se a entrada não correspondesse a nenhuma das condições, o código dentro da outra instrução seria executado.
abaixo está a demonstração de como o script acima se comporta ao executar em PowerShell.,
Relatório de Espaço Livre em Disco de Estado
espaço Livre em disco de relatórios é uma tarefa que é comum para administradores de sistema. A maneira usual de relatar a informação do espaço de discos fixos em uma máquina do Windows gira em torno do código abaixo.
Get-CimInstance -ClassName CIM_LogicalDisk | Where-Object {$_.DriveType -eq 3}
a informação de que o código acima irá retornar se pareceria com a mostrada na próxima imagem.,
Como você pode ver, a saída acima mostra a letra da unidade e o espaço livre de valores, juntamente com outras propriedades. Enquanto a saída acima é boa, não é intuitiva. A forma como a informação é apresentada não indica se o espaço em disco está em um estado crítico ou de aviso ou normal.,
Usando o PowerShell Se a Instrução para Melhorar o Código
Usando o PowerShell If-Else, uma forma mais intuitiva de saída pode ser conseguido através da adição de condições para verificar se o espaço livre está acima ou abaixo de certos limites. E estes limiares irão definir o estado do espaço em disco livre.
o programa de exemplo abaixo executa o seguinte:
- usando o valor da variável
$Critical
, define o limiar para o qual a percentagem de espaço livre será marcada como crítica., - usando o valor da variável
$Warning
, defina o limiar para o qual a percentagem de espaço livre será marcada como aviso. - Obtenha toda a informação do disco fixo da máquina local
- Loop através de toda a informação do disco para determinar o espaço livre e marcar o seu estado.
- Se a percentagem de espaço livre for superior ao valor da variável
$Warning
, o estado do espaço em disco é marcado como normal., - Se a percentagem de espaço livre for superior ao valor da variável
$Critical
, o estado do espaço em disco é marcado como aviso. - Se a percentagem de espaço livre for menor ou igual ao valor da variável
$Critical
, o estado do espaço em disco é marcado como crítico.
- Se a percentagem de espaço livre for superior ao valor da variável
- Compor o objeto de propriedades de
'Drive Letter'
'Drive Name'
'Total Space (GB)'
'Free Space (GB)'
'Free Space (%)'
e'Status'
., - Devolve o relatório final
copia o código abaixo e grava o programa com o nome de ficheiro Get-DiskSpace.ps1
. Não se esqueça de alterar os valores das variáveis
e $Warning
se quiser testar com limiares diferentes.
Uma vez que o script é salvo, testá-lo chamando o seu nome em PowerShell. Abaixo está a demonstração de exemplo de como este script funciona.,
Como você pode ver a partir da saída, o status de cada disco é determinado pelo espaço livre em disco percentual, que foi o resultado de várias condições com PowerShell If-Else.
múltiplo e aninhado If-Else
digamos que você tem uma declaração if-else com uma condição definida no id
bloco., Quando a instrução if-else é executada, o bloco else
é invocado se o código dentro do id
block devolve false.
dentro do bloco else
, você precisa realizar outro teste condicional. Como resultado, você precisa de outra declaração If-Else. Este cenário é chamado de “se-Else” aninhado. A declaração se-Else aninhada é comumente usada se o If-Else interno depende do resultado da operação no If-Else externo.
usando múltiplas e aninhadas afirmações If-Else pode ser bastante confuso., O ponto chave é lembrar a colocação do andaime e certificar-se de que você indenta o seu código. Indentar o seu código irá ajudá-lo a reconhecer e separar facilmente as suas declarações If-Else.
exemplo de múltiplas / aninhadas declarações If-Else
o script de exemplo abaixo mostra como múltiplo e aninhado If-Else pode ser dependente do resultado um do outro. A lógica do código abaixo é a seguinte.
- If the
$SendEmail
is$false
, the script will do nothing and exit., - Se
$SendEmail
é$true
, o$From
e$To
variáveis não deve ser deixado em branco ou nulo. Caso contrário, o$abortFlag
será definido como 1. - Se
$SendEmail
é$true
e o$CCEnabled
é$true
, o$CC
variável não deve ser deixado em branco ou nulo. Caso contrário, o$abortFlag
será definido como 1., - Se
$SendEmail
é$true
e o$BCCEnabled
é$true
, o$BCC
variável não deve ser deixado em branco ou nulo. Caso contrário, o$abortFlag
será definido como 1. - Se o valor
$abortFlag
for 1, o programa irá sair neste ponto e não irá continuar. - If the
$abortFlag
value is 0, the script continues until the end.
Copie o código abaixo e guarde-o como Send-MyMail.ps1
. Não altere quaisquer valores ainda.,
Depois de ter gravado o ficheiro, execute-o em PowerShell como mostrado abaixo. A demonstração abaixo mostra o resultado do script quando os valores das variáveis permanecem inalterados.
em seguida, edite o script e atualização de todas as variáveis corretamente como este trecho de código abaixo.
Depois de editar as variáveis, salve o script e execute-o novamente. Ele deve mostrar-lhe o mesmo resultado, como visto abaixo.,
Agora, modificar as variáveis e experimentar combinações diferentes para testar como o aninhados o If-Else serão afetados. Modificar e testar por si só iria ajudá-lo a entender mais a lógica.
resumo
neste artigo, você aprendeu sobre a construção lógica condicional-a construção PowerShell If-Else., Usando a declaração If-Else permite que os scripters formulem lógica condicional e direcionem as ações de seus scripts com base em testes de resultados.
com os exemplos mostrados neste artigo, você deve ter aprendido maneiras e técnicas sobre como usar a declaração If-Else ao criar um código de decisão. Se-Else pode ser simples usando uma única condição e fica mais complexo, enquanto você cavar mais fundo nas declarações se-Else aninhadas.o que acha da declaração If-Else? Isso é algo que você acha que estaria usando mais e mais depois de ler este artigo?, Que outros propósitos você pode pensar de onde você pode aplicar o conhecimento que adquiriu aqui?
Leitura Adicional
- sobre se
- De Volta ao básico: o ciclo de foreach PowerShell