Como Usar Declarações If do PowerShell para Adicionar Lógica Condicional aos Seus Scripts

PowerShell é uma poderosa linguagem de script por muitas razões. Uma dessas razões é sua suporte a logica condicional, que pode ajudar a supercarregar seus scripts PowerShell, tornando-os ainda mais eficientes e eficazes. Neste artigo, vou te ensinar como usar Se, Senão, e Senão se logica condicional e explicar como isso pode te ajudar como scriptista de PowerShell.

Como usar o comando If em PowerShell

Comandos Se de PowerShell são usados para executar condicionalmente o código. Eles permitem que você teste uma condição e execute blocos de código diferentes com base se a condição for avaliada como verdadeira ou falsa.

Vamos começar com dois exemplos mostrando como usar comandos Se em PowerShell.

Exemplo 1: Verificar se um número é positivo ou negativo

No exemplo a seguir, temos uma variável, $number, definida como 10. O comando Se verifica se o valor de $number é maior que 0 usando o operador -gt.

  • Quando a condição for verdadeira, executa o bloco de código dentro do primeiro conjunto de chaves, que no caso imprime “O número é positivo.”
  • Quando a condição for falsa, move para o bloco Senão se e verifica se o número é menor que 0 usando o operador -lt.
  • Se a condição for verdadeira, executa o código dentro do segundo conjunto de chaves, imprimindo “O número é negativo.”
  • Se ambas as condições forem falsas, executa o código dentro do bloco else, imprimindo “O número é zero.”
$number = 10

if ($number -gt 0) {
    Write-Host “The number is positive.”
} elseif ($number -lt 0) {
    Write-Host “The number is negative.”
} else {
    Write-Host “The number is zero.”
}
Checking if a number is positive or negative (Image credit: Petri/Bill Kindle)

Exemplo 2: Verificando se um arquivo existe

Neste próximo exemplo, temos uma variável, $file, definida como o caminho de um arquivo. A instrução If usa o comando Test-Path para verificar se o arquivo existe.

  • Se a condição for avaliada como verdadeira, o que significa que o arquivo existe, executa o código dentro do primeiro conjunto de chaves, imprimindo “O arquivo existe.”
  • Se a condição for falsa, executa o código dentro do bloco else, imprimindo “O arquivo não existe.”
$file = “C:\path\to\file.txt”

if (Test-Path $file) {
    Write-Host “The file exists.”
} else {
    Write-Host “The file does not exist.”
}
Checking if a file exists (Image credit: Petri/Bill Kindle)

Esses foram apenas dois exemplos básicos de como as instruções condicionais funcionam no PowerShell. Vamos passar para a instrução Else.

Como usar a instrução Else do PowerShell com a instrução If

No PowerShell, você pode usar a instrução Else com a instrução If para criar lógica condicional. Isso permite que você especifique um bloco de código a ser executado quando a condição na instrução If for falsa.

Deixe-me dar dois exemplos mostrando como usar instruções Else no PowerShell.

Exemplo 3: Verificando se uma variável é maior que um número

Neste exemplo, fazemos várias verificações:

  • A instrução If verifica se a variável $number é maior que 10.
  • Se for, a mensagem “O número é maior que 10” é exibida.
  • Se não atender à condição, o bloco Else é executado e a mensagem “O número não é maior que 10” é exibida.
$number = 5

if ($number -gt 10) {
    Write-Host “The number is greater than 10.”
}
else {
    Write-Host “The number is not greater than 10.”
}
Checking if a variable is greater than a number (Image credit: Petri/Bill Kindle)

Exemplo 4: Comparando o valor de uma variável com uma string

Neste exemplo, a instrução If compara o valor da variável $user com a string “John”.

  • Se forem iguais, a mensagem “Bem-vindo, John!” é exibida.
  • Se não atender à condição, ou seja, o valor de $user não é “John”, o bloco Else é executado e a mensagem “Acesso negado. Você não é John.” é exibida.
$user = “John”

if ($user -eq “John”) {
    Write-Host “Welcome, John!”
}
else {
    Write-Host “Access denied. You are not John.”
}
Comparing the value of a variable with a string (Image credit: Petri/Bill Kindle)

A diferença entre um Se e um Senão está nas condições que eles avaliam e nas ações subsequentes que executam.

  • Um Se avalia uma condição e executa código se a condição for verdadeira.
  • Um Senão fornece um bloco de código alternativo a ser executado quando a condição no Se é falsa. Se a condição no Se for verdadeira, o bloco Senão não é executado.

Para resumir, o Se permite que você execute código com base em uma condição específica. O Senão fornece uma opção de recuo quando a condição é falsa. Usando essas declarações juntas, você pode criar uma lógica mais flexível e robusta em seus scripts PowerShell.

Como usar declarações ElseIf em PowerShell

SenãoSe é usado para criar uma condição que verifica se a declaração Se precedente ou qualquer declaração SenãoSe precedente avalia ‘falsa’. As declarações SenãoSe permitem que você teste várias condições e execute blocos de código diferentes com base na avaliação dessas condições. A declaração SenãoSe é especialmente útil quando você tem mais de dois resultados.

Aqui estão dois exemplos que mostram o uso de declarações SenãoSe em PowerShell.

Exemplo 5: Verificando o intervalo de um número

Neste exemplo, o código verifica o valor da variável $number e executa blocos de código diferentes com base em seu intervalo.

  • Se o número for menor que 10, a primeira condição é verdadeira e a mensagem correspondente é exibida.
  • Se não for, nós verificamos a próxima condição usando o comando ElseIf. Quando o número estiver entre 10 e 19 (inclusive), a segunda condição é verdadeira, e a mensagem correspondente é exibida.
  • Se nenhuma das condições anteriores for verdadeira, o bloco Else é executado, exibindo uma mensagem mostrando que o número é 20 ou maior.
$number = 25

if ($number -lt 10) {
    Write-Host “The number is less than 10.”
}
elseif ($number -ge 10 -and $number -lt 20) {
    Write-Host “The number is between 10 and 19.”
}
else {
    Write-Host “The number is 20 or greater.”
}
Checking a number’s range (Image credit: Petri/Bill Kindle)

Exemplo 6: Verificando a longevidade de uma string

Neste exemplo, o código examine a longevidade da string $name e determine sua categoria com base na sua longevidade.

  • Quando o nome tiver mais de 10 caracteres, a primeira condição é verdadeira, e a mensagem correspondente é exibida.
  • Quando a primeira condição for falsa, nós verificamos a próxima condição usando o comando ElseIf. Se o nome tiver mais de 5 caracteres (mas não mais de 10), a segunda condição é verdadeira, e a mensagem correspondente é exibida.
  • Se nenhuma das condições anteriores for verdadeira, o bloco Else é executado e exibe uma mensagem mostrando que o nome é de 5 caracteres ou menos.
$name = “John”

if ($name.Length -gt 10) {
    Write-Host “The name is longer than 10 characters.”
}
elseif ($name.Length -gt 5) {
    Write-Host “The name is between 6 and 10 characters.”
}
else {
    Write-Host “The name is 5 characters or shorter.”
}
Checking a string’s length (Image credit: Petri/Bill Kindle)

Em geral, as declarações ElseIf no PowerShell especificam condições para verificação quando as declarações anteriores são avaliadas como falsas. Elas fornecem uma maneira de lidar com múltiplas condições e executar blocos de código diferentes de acordo.

Como usar declarações PowerShell AND/OR com declarações If

No PowerShell, “AND” e “OR” são operadores lógicos usados para combinar várias condições em declarações condicionais para controlar o fluxo do seu script. Eles podem ser usados com declarações If para avaliar várias condições simultaneamente:

Deixe-me fornecer dois exemplos para mostrar seu uso e destacar as diferenças em comparação com declarações IfElse.

Exemplo 7: Usando o operador AND

Imagine que você queira usar o PowerShell para verificar se um usuário é um administrador e se sua conta está atualmente ativa. Você pode usar o operador AND para avaliar ambas as condições simultaneamente.

Neste exemplo, o script verifica se tanto as variáveis $isAdministrator quanto $isAccountActive são verdadeiras. Se ambas as condições forem verdadeiras, o script imprime uma mensagem mostrando que o usuário é um administrador com uma conta ativa. Caso contrário, ele imprimirá uma mensagem mostrando que o usuário não é um administrador, ou sua conta está inativa.

$user = “John”
$isAdministrator = $true
$isAccountActive = $false

if ($isAdministrator -and $isAccountActive) {
    Write-Host “$user is an administrator with an active account.”
} else {
    Write-Host “$user is not an administrator, or their account is inactive.”
}
Checking if a user is an administrator and if their account is currently active (Image credit: Petri/Bill Kindle)

Exemplo 8: Usando o operador “OR”

Vamos dizer que você quer verificar se um servidor está rodando Windows Server 2016 ou Windows Server 2019. Com PowerShell, você pode usar o operador OU para avaliar essas condições.

Neste exemplo, o script usa o operador OU para verificar se a variável $osVersion é igual a “Windows Server 2016” ou “Windows Server 2019”. Se a condição for avaliada como verdadeira, ela imprime uma mensagem mostrando que o servidor está rodando um sistema operacional suportado. Caso contrário, ela imprime uma mensagem mostrando que o servidor está rodando um sistema operacional não suportado.

$server = “Server01”
$osVersion = “Windows Server 2012”

if ($osVersion -eq “Windows Server 2016” -or $osVersion -eq “Windows Server 2019”) {
    Write-Host “$server is running a supported operating system.”
} else {
    Write-Host “$server is running an unsupported operating system.”
}
Checking if our variable is equal to either Windows Server 2016 or Windows Server 2019 (Image credit: Petri/Bill Kindle)

Exemplo 9: Comparação com estatements IfElse

Os operadores E e OU fornecem uma maneira concisa de avaliar várias condições simultaneamente. Eles diferem de estatements IfElse em que este último avalia apenas uma condição por vez. Se a condição em um estatement IfElse for verdadeira, ele executa o bloco de código associado com o If do estatement. Caso contrário, ele executa o bloco de código associado com o Else do estatement.

Para mostrar isso, vamos alterar o Exemplo 1 para usar uma instrução IfElse em vez disso. Neste exemplo alterado, o script primeiro verifica se o usuário é um administrador. Se for verdadeiro, então verifica se a conta está ativa. Dependendo da avaliação de cada condição, ele executa diferentes blocos de código.

$user = “John”
$isAdministrator = $true
$isAccountActive = $false

if ($isAdministrator) {
    if ($isAccountActive) {
        Write-Host “$user is an administrator with an active account.”
    } else {
        Write-Host “$user is an administrator, but their account is inactive.”
    }
} else {
    Write-Host “$user is not an administrator.”
}
Comparison with IfElse statements (Image credit: Petri/Bill Kindle)

O uso dessa abordagem permite um controle granular sobre o fluxo do script. No entanto, pode causar blocos de código aninhados e aumentar a complexidade em comparação com o uso de operadores lógicos como “E” e “OU”.

Como usar here-strings do PowerShell dentro de instruções If

No PowerShell, here-strings são usadas para criar literais de string em várias linhas. São úteis ao lidar com grandes blocos de texto, ou quando é necessário preservar a formatação.

Here-strings, quando usadas dentro de instruções If, podem comparar um valor de string com uma string em várias linhas. Aqui está a sintaxe para usar here-strings dentro de instruções If do PowerShell:

if ($string -eq @’
    Multi-line
    string
    ‘@)
{
    # Code to execute if the condition is true
}
else
{
    # Code to execute if the condition is false
}

Deixe-me dar dois exemplos para ajudá-lo a entender melhor como usar here-strings em instruções If.

Exemplo 10: Verificando uma mensagem específica

Vamos supor que temos um script PowerShell que solicita ao usuário uma entrada e queremos verificar se o usuário inseriu uma mensagem específica, como “Olá, mundo!”. Podemos usar uma cadeia de caracteres aqui dentro de uma instrução if para comparar a entrada do usuário com a mensagem esperada.

No exemplo a seguir, o script solicita ao usuário que digite uma mensagem e armazenamos a entrada na variável $userInput. A instrução if então compara a entrada do usuário com a mensagem esperada usando uma cadeia de caracteres aqui. Se a entrada corresponder à mensagem esperada, ele exibe a mensagem “O usuário digitou a mensagem correta”; caso contrário, exibe “O usuário digitou uma mensagem diferente”.

$userInput = Read-Host “Enter a message”

if ($userInput -eq @’
Hello, world!
‘@)
{
    Write-Host “User entered the correct message.”
}
else
{
    Write-Host “User entered a different message.”
}
Using here-strings to check for a specific message (Image credit: Petri/Bill Kindle)

Exemplo 11: Comparando um bloco de script

Aqui está outro exemplo em que queremos comparar um bloco de script com um bloco de código predefinido. Podemos usar cadeias de caracteres aqui para definir o bloco de script e, em seguida, compará-lo dentro de uma instrução If.

Neste exemplo, temos dois blocos de script, $predefinedCode e $userCode. Queremos verificar se o código do usuário corresponde ao código predefinido. Usando cadeias de caracteres aqui para definir os blocos de script, podemos compará-los dentro da instrução If.

Se o código do usuário corresponder ao código predefinido, ele exibe a mensagem “O código do usuário corresponde ao código predefinido”; caso contrário, exibe “O código do usuário difere do código predefinido”.

$predefinedCode = {
    Write-Host “This is some code.”
    Write-Host “It does something.”
}

$userCode = {
    Write-Host “This is some code.”
    Write-Host “It does something.”
}

if ($userCode -eq $predefinedCode)
{
    Write-Host “The user code matches the predefined code.”
}
else
{
    Write-Host “The user code differs from the predefined code.”
}
Using here-strings to compare a script block (Image credit: Petri/Bill Kindle)

Como usar concatenação dentro de instruções If

No PowerShell, você pode concatenar strings usando o operador aritmético ‘+’. Para usar a concatenação dentro de declarações If, você constrói uma nova string combinando várias variáveis de string ou literais.

Aqui estão dois exemplos para ilustrar o uso da concatenação em declarações If do PowerShell:

Exemplo 12: Concatenando variáveis de string

Neste exemplo, duas variáveis de string, $firstName e $lastName, são definidas. A declaração If verifica se ambas as variáveis têm valores (ou seja, não são strings vazias).

  • Se ambas as condições forem verdadeiras, concatenamos o primeiro nome e o último nome usando o operador + e armazenamos o resultado na variável $fullName. Em seguida, exibimos o nome completo concatenado usando o cmdlet Write-Host.
  • Se o primeiro nome ou o último nome estiverem faltando, verificaremos que o bloco else é executado e exibe uma mensagem apropriada.
$firstName = “John”
$lastName = “Doe”

if ($firstName -ne ” -and $lastName -ne ”) {
    $fullName = $firstName + “ “ + $lastName
    Write-Host “Full Name: $fullName”
} else {
    Write-Host “First name or last name is missing.”
}
Concatenating string variables (Image credit: Petri/Bill Kindle)

Exemplo 13: Concatenando literais de string

Neste segundo exemplo, três variáveis são definidas: $greeting com o valor “Hello”, $name com o valor “Alice”, e $age com o valor 30. O comando if verifica se a variável $name tem um valor usando o método IsNullorEmpty().

  • Se verdadeiro, criamos uma mensagem que concatena o cumprimento, o nome e a idade usando o operador +. Armazenamos a mensagem resultante na variável $message e depois a exibimos usando o comando Write-Host.
  • Se o nome estiver faltando (string vazia), o bloco else é executado e uma mensagem de erro apropriada é exibida.
$greeting = “Hello”
$name = “Alice”
$age = 30

if ([string]::IsNullorEmpty($name) -eq $false){
    $message = $greeting + “, “ + $name + “! Your age is “ + $age + “.”
    Write-Host $message
} else {
    Write-Host “Name is missing.”
}
Concatenating string literals (Image credit: Petri/Bill Kindle)

Em geral, estes dois exemplos mostram como as operações de concatenação permitem combinar strings dinamicamente com base em certas condições.

Como usar strings de conexão em instruções if

String de conexão é comumente usada para estabelecer conexões com bancos de dados ou outros sistemas externos. Estas strings contêm informações sobre o servidor, nome do banco de dados, credenciais e outros parâmetros necessários para estabelecer a conexão.

Nas declarações If, você pode usar sequências de conexão para executar determinados blocos de código com base no sucesso ou falha de uma conexão. Aqui estão dois exemplos que mostram o uso de sequências de conexão em declarações If do PowerShell:

Exemplo 14: Verificando uma conexão de banco de dados

Neste exemplo, definimos uma sequência de conexão ($connectionString) que especifica o nome do servidor, nome do banco de dados e credenciais. Em seguida, criamos um objeto SqlConnection usando a sequência de conexão. Dentro do bloco try, tentamos abrir a conexão usando $connection.Open().

  • Se a conexão for bem-sucedida, o bloco de código é executado sob o bloco try, mostrando uma conexão bem-sucedida.
  • Se ocorrer uma exceção (ou seja, a conexão falhar), o bloco de código é executado sob o bloco catch, mostrando uma conexão falhada.
# Define the connection string
$connectionString = “Server=server_name;Database=db_name;User Id=user_id;Password=password;"

# Create a SqlConnection object using the connection string
$connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)

# Attempt to establish the connection
try {
    $connection.Open()
   
    # Connection successful
    Write-Host “Connected to the database.”

    # Perform additional operations on the database if needed

    # Close the connection
    $connection.Close()
}
catch {
    # Connection failed
    Write-Host “Failed to connect to the database.”
}
Checking a database connection (Image credit: Petri/Bill Kindle)

Exemplo 15: Verificando uma conexão de rede

Neste segundo exemplo, definimos uma sequência de conexão ($connectionString) que especifica o nome do servidor e o número da porta. Em seguida, criamos um objeto TcpClient usando a sequência de conexão. Dentro do bloco try, tentamos estabelecer uma conexão com o servidor usando $tcpClient.Connect(”nome_do_servidor”, 1234).

  • Se a conexão for bem-sucedida, o bloco de código é executado sob o bloco try, mostrando uma conexão bem-sucedida.
  • Se ocorrer uma exceção (isto é, falha na conexão), o bloco de código é executado dentro do bloco catch, mostrando uma conexão falhada.
# Define the connection string
$connectionString = “Server=server_name;Port=1234;"

# Create a TcpClient object using the connection string
$tcpClient = New-Object System.Net.Sockets.TcpClient

# Attempt to establish the connection
try {
    $tcpClient.Connect(”server_name”, 1234)
   
    # Connection successful
    Write-Host “Connected to the server.”

    # Perform additional operations if needed

    # Close the connection
    $tcpClient.Close()
}
catch {
    # Connection failed
    Write-Host “Failed to connect to the server.”
}
Checking a network connection (Image credit: Petri/Bill Kindle)

Esses exemplos acima são simplificados e presumem uma conexão bem-sucedida se nenhuma exceção for lançada. Nas situações reais, é importante tratar as exceções apropriadamente. Você deve usar mecanismos de tratamento de erros e de autenticação adicionais com base nas exigências específicas da sua conexão.

Como usar as instruções Break e Continue dentro de um statement If

No PowerShell, as instruções Break e Continue são usadas para controlar o fluxo de execução dentro de laços eswitch. Enquanto Break permite que você saia de um laço ou switch, Continue permite que você pule a iteração atual e vá para a próxima iteração.

Embora essas instruções sejam típicamente usadas em laços, você também pode usá-las dentro de um If statement para alcançar um comportamento específico. Vamos explorar como usar um Break e Continue dentro de If statements com dois exemplos fáceis de seguir.

Exemplo 16: Usando Break em um if statement

Neste exemplo, temos um array de números de 1 a 10. Usamos um loop Foreach para iterar sobre cada número. Dentro do loop, verificamos se o número atual é igual a 6.

  • Se for, exibimos uma mensagem e depois usamos o comando break para sair do loop.
  • Se o número não for igual a 6, simplesmente exibimos o número atual.
  • Quando o loop encontra o número 6, ele sai do loop e o programa continua com o código subsequente.
$numbers = 1..10

foreach ($number in $numbers) {
    if ($number -eq 6) {
        Write-Host “Found the number 6. Exiting the loop.”
        break
    }
   
    Write-Host “Current number is: $number”
}
Using Break in an If statement (Image credit: Petri/Bill Kindle)

Exemplo 17: Usando Continue em um if statement

Neste exemplo, novamente temos um array de números de 1 a 10. Usamos um loop Foreach para iterar sobre cada número. Primeiro, verificamos se o número atual é 3 ou 7.

  • Se verdadeiro; exibimos uma mensagem e depois usamos o comando Continue para pular a iteração atual e passar para a próxima.
  • Se o número não for 3 ou 7, exibimos o número atual. O loop continuará até avaliarmos todos os números.
$numbers = 1..10

foreach ($number in $numbers) {
    if ($number -eq 3 -or $number -eq 7) {
        Write-Host “Skipping the number $number”
        continue
    }
   
    Write-Host “Current number is: $number”
}
Using Continue in an If statement (Image credit: Petri/Bill Kindle)

Em ambos os exemplos, usamos If statements para executar condicionalmente determinadas ações com base em condições específicas. O comando Break nos permitiu sair do loop ou alternar completamente, enquanto o comando Continue pulou o código restante dentro da iteração atual e passou para a próxima iteração.

Como usar tabelas hash dentro de estatísticas condicionais

No PowerShell, você pode usar tabelas hash dentro de If estatísticas para realizar verificações condicionais baseadas em pares chave-valor. As tabelas hash são uma coleção de pares chave-valor onde cada chave é única.

Aqui estão dois exemplos mostrando como usar tabelas hash em estatísticas If do PowerShell.

Exemplo 18: Verificando se uma chave específica existe em uma tabela hash

Neste exemplo, temos uma tabela hash chamada $myHashtable com três pares chave-valor. O If estatística verifica se a chave “Idade” existe na tabela hash usando o método ContainsKey(). Se a chave existe, ela imprime uma mensagem dizendo que a idade está presente; caso contrário, imprime uma mensagem afirmando que a idade não está presente.

# Create a hashtable
$myHashtable = @{
    “Name” = “John”
    “Age” = 30
    “City” = “New York”
}

# Check if a specific key exists in the hashtable
if ($myHashtable.ContainsKey(”Age”)) {
    Write-Host “Age is present in the hashtable.”
}
else {
    Write-Host “Age is not present in the hashtable.”
}
Checking if a specific key exists in a hashtable (Image credit: Petri/Bill Kindle)

Exemplo 19: Verificando se um valor específico existe em uma tabela hash

Neste exemplo, novamente temos a mesma tabela hash chamada $myHashtable. O If estatística verifica se o valor “New York” existe na tabela hash usando o método ContainsValue(). Se o valor existe, ela imprime uma mensagem dizendo que a cidade é New York; caso contrário, imprime uma mensagem afirmando que a cidade não é New York.

# Create a hashtable
$myHashtable = @{
    “Name” = “John”
    “Age” = 30
    “City” = “New York”
}

# Check if a specific value exists in the hashtable
if ($myHashtable.ContainsValue(”New York”)) {
    Write-Host “The city is New York.”
}
else {
    Write-Host “The city is not New York.”
}
Checking if a specific value exists in a hashtable (Image credit: Petri/Bill Kindle)

Como usar arrays em estatísticas condicionais

No PowerShell, podemos usar arrays em declarações If para verificar certas condições e realizar ações específicas com base nessas condições. Aqui estão dois exemplos que mostram o uso de arrays em declarações If.

Exemplo 20: Verificando se um array contém um valor específico

Neste exemplo, temos um array chamado $numbers que contém uma sequência de números. A declaração If verifica se o array contém o valor ‘3’ usando o operador -contains. Se a condição for verdadeira, ele exibirá “O array contém o valor 3”. Caso contrário, ele exibirá “O array não contém o valor 3”.

# Define an array of numbers
$numbers = 1, 2, 3, 4, 5

# Check if the array contains a specific value, e.g., 3
if ($numbers -contains 3) {
    Write-Host “The array contains the value 3.”
} else {
    Write-Host “The array does not contain the value 3.”
}
Checking if an array contains a specific value (Image credit: Petri/Bill Kindle)

Exemplo 21: Verificando se um array está vazio

Neste exemplo, temos um array vazio chamado $emptyArray. A declaração If verifica se a propriedade length do array é igual a 0. Se a condição for verdadeira, ele exibirá “O array está vazio”. Caso contrário, ele exibirá “O array não está vazio”.

# Define an empty array
$emptyArray = @()

# Check if the array is empty
if ($emptyArray.Length -eq 0) {
    Write-Host “The array is empty.”
} else {
    Write-Host “The array is not empty.”
}
Checking if an array is empty (Image credit: Petri/Bill Kindle)

Como usar declarações Switch no PowerShell

No PowerShell, a instrução Switch fornece uma maneira de realizar ramificação condicional com base no valor de uma variável ou de uma expressão. Isso permite comparar um único valor com vários valores e executar blocos de código diferentes dependendo da correspondência.

Aqui está uma explicação de como usar as instruções Switch no PowerShell com dois exemplos fáceis de seguir.

Exemplo 22: Verificando os dias da semana

Neste exemplo, temos uma variável $day que representará o dia atual. A instrução Switch verifica o valor de $day em diferentes casos usando as strings “Monday”, “Tuesday” e assim por diante.

  • Se houver correspondência, o script executará o bloco de código correspondente.
  • Se não houver correspondência, o script executará o bloco Padrão. Aqui, a saída será “É o início da semana!”
$day = (Get-Date).DayOfWeek

switch ($day) {
    “Monday” {
        Write-Host “It’s the start of the week!”
    }
    “Tuesday” {
        Write-Host “It’s Tuesday!”
    }
    “Wednesday” {
        Write-Host “It’s the middle of the week!”
    }
    “Thursday” {
        Write-Host “It’s almost Friday!”
    }
    “Friday” {
        Write-Host “It’s finally Friday!”
    }
    Default {
        Write-Host “It’s the weekend!”
    }
}
Using a Switch statement to check for days of the week (Image credit: Petri/Bill Kindle)

Exemplo 23: Categorizando números

Neste segundo exemplo, temos uma variável $number com o valor 42. A instrução Switch verifica o valor de $number em diferentes casos usando blocos de script. O primeiro caso verifica se o número é menor que 0, o segundo caso verifica se é maior que 0, e o bloco Padrão é executado se nenhum outro caso corresponder. Aqui, a saída será “Número positivo.”

$number = 42

switch ($number) {
    { $_ -lt 0 } {
        Write-Host “Negative number”
    }
    { $_ -gt 0 } {
        Write-Host “Positive number”
    }
    Default {
        Write-Host “Zero”
    }
}
Using a Switch statement to categorize numbers (Image credit: Petri/Bill Kindle)

Em ambos os exemplos, você pode personalizar os blocos de código dentro de cada caso para executar quaisquer ações desejadas com base na condição correspondente. O Switch statement é uma construção poderosa no PowerShell que fornece uma maneira elegante de lidar com várias condições para executar blocos de código.

PowerShell e lógica condicional: Um resumo

No geral, as declarações If e suas construções relacionadas fornecem ferramentas poderosas para implementar lógica condicional em scripts do PowerShell. As declarações If são essenciais para executar condicionalmente o código, pois permitem testar uma condição e executar diferentes blocos de código com base em se a condição avalia como verdadeira ou falsa.

Os exemplos que forneci neste artigo demonstraram como as declarações If do PowerShell podem ser usadas para verificar se um número é positivo ou negativo, ou se um arquivo existe. No entanto, detalhei muitos outros truques de lógica condicional neste artigo para ajudá-lo a se tornar um melhor escritor de scripts do PowerShell. A informação aqui estava bastante densa, então aqui está o que você precisa lembrar.

  • Else declarações são usadas em conjunto com as declarações If para criar lógica condicional, fornecendo uma opção de fallback quando a condição não é atendida.
  • As declarações ElseIf também podem ser usadas para criar condições que são verificadas somente se as declarações If ou ElseIf precedentes avaliarem como falsas, permitindo uma lógica condicional mais complexa.
  • Operadores lógicos como AND e OR podem ser utilizados para combinar múltiplas condições em instruções If para controlar o fluxo do script. Here-strings também podem ser usadas dentro de instruções If para comparar valores de string contra strings de várias linhas.
  • A concatenação de strings usando o operador ‘+’ também permite combinar dinamicamente strings com base em condições específicas dentro de instruções If.
  • Strings de conexão são comumente usadas em instruções If para executar blocos de código condicionalmente com base no sucesso ou falha de uma conexão com bancos de dados ou sistemas externos.
  • As instruções Break e Continue fornecem controle sobre a execução de loops e switches, e você pode usá-las dentro de instruções If para alcançar um comportamento específico.
  • Hashtables e arrays também podem ser usados em instruções If para verificar condições específicas e realizar ações com base nessas condições.
  • Por fim, a instrução Switch permite ramificação condicional com base no valor de uma variável ou expressão, possibilitando a execução de diferentes blocos de código dependendo da correspondência.

Obrigado por ler este guia detalhado sobre instruções If do PowerShell, sinta-se à vontade para fazer perguntas na seção de comentários abaixo!

Source:
https://petri.com/powershell-if-statement/