Cómo usar las declaraciones If de PowerShell para agregar lógica condicional a tus scripts

PowerShell es un lenguaje de secuencias de comandos poderoso por muchas razones. Una de esas razones es su soporte para la lógica condicional, que puede ayudarte a potenciar tus scripts de PowerShell para hacerlos aún más eficientes y efectivos. En este artículo, te voy a enseñar cómo usar la lógica condicional If, Else y Elseif y explicar cómo esto puede ayudarte como escritor de scripts de PowerShell.

Cómo usar la declaración If de PowerShell

Las declaraciones de If de PowerShell se utilizan para realizar la ejecución condicional de código. Te permiten probar una condición y ejecutar diferentes bloques de código según si la condición se evalúa como verdadera o falsa.

Comencemos con dos ejemplos que muestran cómo usar las declaraciones de If de PowerShell.

Ejemplo 1: Comprobando si un número es positivo o negativo

En el siguiente ejemplo, tenemos una variable, $number, establecida en 10. La declaración If comprueba si el valor de $number es mayor que 0 usando el operador -gt.

  • Cuando la condición es verdadera, ejecuta el bloque de código dentro del primer conjunto de llaves, que en este caso imprime “El número es positivo”.
  • Cuando la condición es falsa, pasa al bloque Elseif y comprueba si el número es menor que 0 usando el operador -lt.
  • Si la condición es verdadera, ejecuta el código dentro del segundo conjunto de llaves, imprimiendo “El número es negativo.”
  • Si ambas condiciones son falsas, ejecuta el código dentro del bloque else, imprimiendo “El número es cero.”
$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)

Ejemplo 2: Comprobando si un archivo existe

En este siguiente ejemplo, tenemos una variable, $file, establecida en la ruta de un archivo. La instrucción If utiliza el cmdlet Test-Path para verificar si el archivo existe.

  • Si la condición se evalúa como verdadera, lo que significa que el archivo existe, ejecuta el código dentro del primer conjunto de llaves, imprimiendo “El archivo existe.”
  • Si la condición es falsa, ejecuta el código dentro del bloque else, imprimiendo “El archivo no 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)

Estos fueron solo dos ejemplos básicos de cómo funcionan las declaraciones condicionales en PowerShell. Pasemos a la instrucción Else.

Cómo usar la instrucción Else de PowerShell con la instrucción If

En PowerShell, puedes usar la declaración Else con la declaración If para crear lógica condicional. Te permite especificar un bloque de código para ejecutar cuando la condición en la declaración If es falsa.

Permíteme darte dos ejemplos que muestran cómo usar las declaraciones Else en PowerShell.

Ejemplo 3: Comprobando si una variable es mayor que un número

En este ejemplo, realizamos varias comprobaciones:

  • La declaración If verifica si la variable $number es mayor que 10.
  • Si lo es, se muestra el mensaje “El número es mayor que 10”.
  • Si no cumple la condición, se ejecuta el bloque Else y se muestra el mensaje “El número no es mayor que 10”.
$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)

Ejemplo 4: Comparando el valor de una variable con una cadena

En este ejemplo, la declaración If compara el valor de la variable $user con la cadena “John”.

  • Si son iguales, se muestra el mensaje “¡Bienvenido, John!”.
  • Si no cumple la condición, es decir, el valor de $user no es “John”, se ejecuta el bloque Else y se muestra el mensaje “Acceso denegado. No eres John.”.
$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)

La diferencia entre una declaración If y Else radica en las condiciones que evalúan y las acciones subsecuentes que ejecutan.

  • Una declaración If verifica una condición y ejecuta código si la condición es verdadera.
  • Una declaración Else proporciona un bloque alternativo de código que se ejecutará cuando la condición en la declaración If sea falsa. Si la condición en la declaración If es verdadera, el bloque Else no se ejecuta.

En resumen, la declaración If te permite ejecutar código basado en una condición específica. La declaración Else proporciona una opción de respaldo cuando la condición es falsa. Al utilizar estas declaraciones juntas, puedes crear una lógica más flexible y sólida en tus scripts de PowerShell.

Cómo usar las declaraciones ElseIf de PowerShell

Las declaraciones ElseIf se utilizan para crear una condición que verifica si la declaración If precedente o cualquier declaración ElseIf precedente evalúa como ‘falsa’. Las declaraciones ElseIf te permiten probar múltiples condiciones y ejecutar diferentes bloques de código según la evaluación de esas condiciones. La declaración ElseIf es especialmente útil cuando tienes más de dos resultados.

Aquí tienes dos ejemplos que muestran el uso de declaraciones ElseIf en PowerShell.

Ejemplo 5: Verificar el rango de un número

En este ejemplo, el código verifica el valor de la variable $number y ejecuta diferentes bloques de código según su rango.

  • Si el número es menor que 10, la primera condición es verdadera y se muestra el mensaje correspondiente.
  • Si no lo es, verificamos la siguiente condición usando la declaración ElseIf. Cuando el número está entre 10 y 19 (inclusive), la segunda condición es verdadera y se muestra el mensaje correspondiente.
  • Si ninguna de las condiciones anteriores es verdadera, se ejecuta el bloque Else, mostrando un mensaje que indica que el número es 20 o mayor.
$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)

Ejemplo 6: Verificación de la longitud de una cadena

En este ejemplo, el código examina la longitud de la cadena $name y determina su categoría según su longitud.

  • Cuando el nombre tiene más de 10 caracteres, la primera condición es verdadera y se muestra el mensaje correspondiente.
  • Cuando la primera condición es falsa, verificamos la siguiente condición usando la declaración ElseIf. Si el nombre tiene más de 5 caracteres (pero no más de 10), la segunda condición es verdadera y se muestra el mensaje correspondiente.
  • Si ninguna de las condiciones anteriores es verdadera, se ejecuta el bloque Else y se muestra un mensaje que indica que el nombre tiene 5 caracteres o 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)

En general, las declaraciones ElseIf en PowerShell especifican condiciones a verificar cuando las declaraciones anteriores evalúan como falsas. Proporcionan una forma de manejar múltiples condiciones y ejecutar diferentes bloques de código en consecuencia.

Cómo usar declaraciones PowerShell AND/OR con instrucciones If

En PowerShell, “AND” y “OR” son operadores lógicos utilizados para combinar múltiples condiciones en declaraciones condicionales para controlar el flujo de su script. Se pueden usar con declaraciones If para evaluar múltiples condiciones simultáneamente:

Déjame proporcionarte dos ejemplos para mostrar su uso y resaltar las diferencias en comparación con las declaraciones IfElse.

Ejemplo 7: Usando el operador AND

Imagina que deseas usar PowerShell para verificar si un usuario es un administrador y si su cuenta está actualmente activa. Puedes usar el operador AND para evaluar ambas condiciones simultáneamente.

En este ejemplo, el script verifica si tanto las variables $isAdministrator como $isAccountActive son verdaderas. Si ambas condiciones son verdaderas, el script imprime un mensaje mostrando que el usuario es un administrador con una cuenta activa. De lo contrario, imprimirá un mensaje mostrando que el usuario no es un administrador o que su cuenta está inactiva.

$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)

Ejemplo 8: Usando el operador “OR”

Digamos que quieres verificar si un servidor está ejecutando Windows Server 2016 o Windows Server 2019. Con PowerShell, puedes usar el operador OR para evaluar estas condiciones.

En este ejemplo, el script utiliza el operador OR para verificar si la variable $osVersion es igual a “Windows Server 2016” o “Windows Server 2019”. Si la condición se evalúa como verdadera, imprime un mensaje que muestra que el servidor está ejecutando un sistema operativo compatible. De lo contrario, imprime un mensaje que muestra que el servidor está ejecutando un sistema operativo no compatible.

$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)

Ejemplo 9: Comparación con declaraciones IfElse

Los operadores AND y OR proporcionan una forma concisa de evaluar múltiples condiciones simultáneamente. Difieren de las declaraciones IfElse en que estas últimas solo evalúan una condición a la vez. Si la condición en una declaración IfElse es verdadera, ejecuta el bloque de código asociado con la declaración If. De lo contrario, ejecuta el bloque de código asociado con la declaración Else.

Para mostrar esto, cambiemos el Ejemplo 1 para usar una declaración IfElse en su lugar. En este ejemplo modificado, el script primero verifica si el usuario es un administrador. Si es verdadero, entonces verifica si la cuenta está activa. Dependiendo de la evaluación de cada condición, ejecuta diferentes bloques 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)

Usar este enfoque permite un control detallado sobre el flujo del script. Sin embargo, puede causar bloques de código anidados y una complejidad aumentada en comparación con el uso de operadores lógicos como “Y” y “O”.

Cómo usar here-strings de PowerShell dentro de declaraciones If

En PowerShell, se utilizan here-strings para crear literales de cadena de varias líneas. Son útiles cuando se trabaja con bloques grandes de texto, o cuando se necesita conservar el formato.

Las here-strings, cuando se usan dentro de declaraciones If, pueden comparar un valor de cadena con una cadena de varias líneas. Aquí está la sintaxis para usar here-strings dentro de declaraciones If de PowerShell:

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

Déjame darte dos ejemplos para ayudarte a entender mejor cómo usar here-strings en declaraciones If.

Ejemplo 10: Verificar un mensaje específico

Supongamos que tenemos un script de PowerShell que solicita al usuario una entrada, y queremos verificar si el usuario ingresó un mensaje específico, como “¡Hola, mundo!”. Podemos usar una cadena aquí dentro de una declaración if para comparar la entrada del usuario con el mensaje esperado.

En el siguiente ejemplo, el script solicita al usuario que ingrese un mensaje, y almacenamos la entrada en la variable $userInput. La declaración if luego compara la entrada del usuario con el mensaje esperado usando una cadena aquí. Si la entrada coincide con el mensaje esperado, muestra el mensaje “El usuario ingresó el mensaje correcto”; de lo contrario, muestra “El usuario ingresó un mensaje 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)

Ejemplo 11: Comparando un bloque de script

Aquí hay otro ejemplo donde queremos comparar un bloque de script con un bloque de código predefinido. Podemos usar cadenas aquí para definir el bloque de script y luego compararlo dentro de una declaración If.

En este ejemplo, tenemos dos bloques de script, $predefinedCode y $userCode. Queremos verificar si el código de usuario coincide con el código predefinido. Al usar cadenas aquí para definir los bloques de script, podemos compararlos dentro de la declaración If.

Si el código de usuario coincide con el código predefinido, muestra el mensaje “El código de usuario coincide con el código predefinido”; de lo contrario, muestra “El código de usuario difiere del 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)

Cómo usar la concatenación dentro de las declaraciones If

En PowerShell, puedes concatenar cadenas utilizando el operador aritmético ‘+’. Para usar la concatenación dentro de declaraciones If, construyes una nueva cadena combinando múltiples variables de cadena o literales.

Aquí tienes dos ejemplos para ilustrar el uso de la concatenación en declaraciones If de PowerShell:

Ejemplo 12: Concatenación de variables de cadena

En este ejemplo, se definen dos variables de cadena, $firstName y $lastName. La declaración If verifica si ambas variables tienen valores (es decir, no son cadenas vacías).

  • Si ambas condiciones son verdaderas, concatenamos el nombre y apellido usando el operador +, y almacenamos el resultado en la variable $fullName. Luego mostramos el nombre completo concatenado usando el cmdlet Write-Host.
  • Si falta alguno de los nombres, veremos que se ejecuta el bloque else y se muestra un mensaje apropiado.
$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)

Ejemplo 13: Concatenación de literales de cadena

En este segundo ejemplo, se definen tres variables: $greeting con el valor “Hola”, $name con el valor “Alice”, y $age con el valor 30. La instrucción if verifica si la variable $name tiene un valor utilizando el método IsNullorEmpty().

  • Si es verdadero, creamos un mensaje que concatena el saludo, el nombre y la edad usando el operador +. Almacenamos el mensaje resultante en la variable $message y luego lo mostramos usando el cmdlet Write-Host.
  • Si falta el nombre (cadena vacía), se ejecuta el bloque else y se muestra un mensaje de error apropiado.
$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)

En general, estos dos ejemplos muestran cómo las operaciones de concatenación permiten combinar cadenas dinámicamente según ciertas condiciones.

Cómo usar cadenas de conexión en declaraciones If

Las cadenas de conexión se utilizan comúnmente para establecer conexiones con bases de datos u otros sistemas externos. Estas cadenas contienen información sobre el servidor, el nombre de la base de datos, las credenciales y otros parámetros necesarios para establecer la conexión.

En las declaraciones If, puedes utilizar cadenas de conexión para ejecutar ciertos bloques de código basados en el éxito o fracaso de una conexión. Aquí hay dos ejemplos que muestran el uso de cadenas de conexión en las declaraciones If de PowerShell:

Ejemplo 14: Comprobando una conexión de base de datos

En este ejemplo, definimos una cadena de conexión ($connectionString) que especifica el nombre del servidor, nombre de la base de datos y credenciales. Luego creamos un objeto SqlConnection utilizando la cadena de conexión. Dentro del bloque try, intentamos abrir la conexión usando $connection.Open().

  • Si la conexión es exitosa, se ejecuta el bloque de código bajo el bloque try, mostrando una conexión exitosa.
  • Si ocurre una excepción (es decir, la conexión falla), se ejecuta el bloque de código bajo el bloque catch, mostrando una conexión fallida.
# 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)

Ejemplo 15: Comprobando una conexión de red

En este segundo ejemplo, definimos una cadena de conexión ($connectionString) que especifica el nombre del servidor y el número de puerto. Luego creamos un objeto TcpClient utilizando la cadena de conexión. Dentro del bloque try, intentamos establecer una conexión con el servidor usando $tcpClient.Connect(”nombre_servidor”, 1234).

  • Si la conexión es exitosa, se ejecuta el bloque de código bajo el bloque try, mostrando una conexión exitosa.
  • Si se produce una excepción (es decir, falla la conexión), el bloque de código se ejecuta bajo el bloque catch, mostrando una conexión fallida.
# 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)

Estos ejemplos anteriores son simplificados y asumen una conexión exitosa si no se lanzan excepciones. En escenarios del mundo real, es importante manejar las excepciones apropiadamente. Deberías usar manejo de errores adicionales y mecanismos de autenticación basados en los requisitos específicos de tu conexión.

Cómo usar las declaraciones Break y Continue dentro de una declaración If

En PowerShell, las declaraciones Break y Continue se utilizan para controlar el flujo de ejecución dentro de bucles y switches. Mientras que Break te permite salir de un bucle o switch, Continue te permite saltar la iteración actual y pasar a la siguiente iteración.

Aunque estas declaraciones se utilizan típicamente dentro de bucles, también las puedes utilizar dentro de una declaración If para lograr un comportamiento específico. Veamos cómo usar un Break y Continue dentro de declaraciones If con dos ejemplos fáciles de seguir.

Ejemplo 16: Usando Break en una declaración If

En este ejemplo, tenemos un array de números del 1 al 10. Utilizamos un bucle Foreach para iterar sobre cada número. Dentro del bucle, verificamos si el número actual es igual a 6.

  • Si lo es, mostramos un mensaje y luego utilizamos la declaración break para salir del bucle.
  • Si el número no es igual a 6, simplemente mostramos el número actual.
  • Cuando el bucle encuentra el número 6, sale del bucle y el programa continúa con el código subsiguiente.
$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)

Ejemplo 17: Usando Continue en una declaración If

En este ejemplo, nuevamente tenemos un array de números del 1 al 10. Utilizamos un bucle Foreach para iterar sobre cada número. Primero, verificamos si el número actual es 3 o 7.

  • Si es verdadero; mostramos un mensaje y luego utilizamos la declaración Continue para saltar la iteración actual y pasar a la siguiente.
  • Si el número no es 3 o 7, mostramos el número actual. El bucle continuará hasta evaluar todos los 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)

En ambos ejemplos, utilizamos declaraciones If para ejecutar condicionalmente ciertas acciones basadas en condiciones específicas. La declaración Break nos permitió salir del bucle o cambiar completamente, mientras que la declaración Continue saltó el código restante dentro de la iteración actual y pasó a la siguiente iteración.

Cómo usar hashtables dentro de declaraciones If

En PowerShell, puedes usar hashtables dentro de las declaraciones If para realizar comprobaciones condicionales basadas en pares clave-valor. Las hashtables son una colección de pares clave-valor donde cada clave es única.

Aquí hay dos ejemplos que muestran cómo usar hashtables en declaraciones If en PowerShell.

Ejemplo 18: Comprobar si una clave específica existe en una hashtable

En este ejemplo, tenemos una hashtable llamada $myHashtable con tres pares clave-valor. La declaración If comprueba si la clave “Age” existe en la hashtable usando el método ContainsKey(). Si la clave existe, imprime un mensaje diciendo que la edad está presente; de lo contrario, imprime un mensaje indicando que la edad no 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)

Ejemplo 19: Comprobar si un valor específico existe en una hashtable

En este ejemplo, nuevamente tenemos la misma hashtable llamada $myHashtable. La declaración If comprueba si el valor “Nueva York” existe en la hashtable usando el método ContainsValue(). Si el valor existe, imprime un mensaje diciendo que la ciudad es Nueva York; de lo contrario, imprime un mensaje indicando que la ciudad no es Nueva 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)

Cómo usar arrays en declaraciones If

En PowerShell, podemos usar arreglos en declaraciones If para verificar ciertas condiciones y realizar acciones específicas basadas en esas condiciones. Aquí hay dos ejemplos que muestran el uso de arreglos en declaraciones If.

Ejemplo 20: Comprobando si un arreglo contiene un valor específico

En este ejemplo, tenemos un arreglo llamado $numbers que contiene una secuencia de números. La declaración If verifica si el arreglo contiene el valor ‘3’ usando el operador -contains. Si la condición es verdadera, mostrará “El arreglo contiene el valor 3.” De lo contrario, mostrará “El arreglo no contiene el 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)

Ejemplo 21: Comprobando si un arreglo está vacío

En este ejemplo, tenemos un arreglo vacío llamado $emptyArray. La declaración If verifica si la propiedad de longitud del arreglo es igual a 0. Si la condición es verdadera, mostrará “El arreglo está vacío.” De lo contrario, mostrará “El arreglo no está vacío.”

# 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)

Cómo usar declaraciones Switch en PowerShell

En PowerShell, la declaración Switch proporciona una forma de realizar ramificación condicional basada en el valor de una variable o una expresión. Te permite comparar un solo valor con varios valores y ejecutar diferentes bloques de código dependiendo de la coincidencia.

Aquí tienes una explicación de cómo usar las declaraciones Switch en PowerShell con dos ejemplos fáciles de seguir.

Ejemplo 22: Comprobando los días de la semana

En este ejemplo, tenemos una variable $day que será el día en el que nos encontremos. La declaración Switch compara el valor de $day con diferentes casos utilizando las cadenas “lunes”, “martes”, y así sucesivamente.

  • Si hay una coincidencia, el script ejecuta el bloque de código correspondiente.
  • Si no hay coincidencia, el script ejecuta el bloque Predeterminado. Aquí, la salida será “¡Es el comienzo de la 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)

Ejemplo 23: Clasificación de números

En este segundo ejemplo, tenemos una variable $number con el valor 42. La declaración Switch compara el valor de $number con diferentes casos utilizando bloques de script. El primer caso verifica si el número es menor que 0, el segundo caso verifica si es mayor que 0, y el bloque Predeterminado se ejecuta si no hay coincidencias con otros casos. Aquí, la salida 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)

En ambos ejemplos, puedes personalizar los bloques de código dentro de cada caso para realizar las acciones deseadas basadas en la condición coincidente. La instrucción Switch es una construcción poderosa en PowerShell que proporciona una forma elegante de manejar múltiples condiciones para ejecutar bloques de código.

PowerShell y lógica condicional: Un resumen

En general, las declaraciones If y sus constructos relacionados proporcionan herramientas poderosas para implementar lógica condicional en scripts de PowerShell. Las declaraciones If son esenciales para realizar la ejecución condicional de código ya que te permiten probar una condición y ejecutar diferentes bloques de código según si la condición se evalúa como verdadera o falsa.

Los ejemplos que proporcioné en este artículo demostraron cómo las declaraciones If de PowerShell pueden usarse para verificar si un número es positivo o negativo, o si un archivo existe. Sin embargo, detallé muchos otros trucos de lógica condicional en este artículo para ayudarte a convertirte en un mejor escritor de scripts de PowerShell. La información aquí fue bastante densa, así que aquí está lo que necesitas recordar.

  • Las declaraciones Else se utilizan en conjunto con las declaraciones If para crear lógica condicional, proporcionando una opción de respaldo cuando la condición no se cumple.
  • Las declaraciones ElseIf también se pueden utilizar para crear condiciones que se verifican solo si las declaraciones If o ElseIf precedentes se evalúan como falsas, permitiendo una lógica condicional más compleja.
  • Los operadores lógicos como Y y O pueden ser utilizados para combinar múltiples condiciones en declaraciones If para controlar el flujo del script. Las cadenas aquí también pueden ser utilizadas dentro de declaraciones If para comparar valores de cadena contra cadenas de varias líneas.
  • La concatenación de cadenas usando el operador ‘+’ también te permite combinar dinámicamente cadenas basadas en condiciones específicas dentro de declaraciones If.
  • Las cadenas de conexión son comúnmente usadas en declaraciones If para ejecutar condicionalmente bloques de código basados en el éxito o fracaso de una conexión a bases de datos o sistemas externos.
  • Las declaraciones Break y Continue proveen control sobre la ejecución de bucles y switches, y puedes usarlas dentro de declaraciones If para lograr un comportamiento específico.
  • Los Hashtable y arrays también pueden ser usados en declaraciones If para verificar condiciones específicas y realizar acciones basadas en esas condiciones.
  • Finalmente, la declaración Switch permite ramificaciones condicionales basadas en el valor de una variable o expresión, permitiendo la ejecución de diferentes bloques de código dependiendo de la coincidencia.

¡Gracias por leer esta guía detallada sobre las declaraciones If en PowerShell, no dudes en hacer preguntas en la sección de comentarios abajo!

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