Simplificar la lógica condicional con operadores ternarios de PowerShell

La construcción if/then es común en el código de PowerShell, pero ¿sabías que hay otra forma llamada el operador ternario que te permite hacer tus construcciones if/then mucho más concisas? Vamos a aprender cómo construir un operador ternario de PowerShell personalizado.

A costa de la legibilidad, algunos dicen, el operador ternario construye una lógica condicional que es más concisa, más simple y con menos código. ¡Tienen razón, pero es tan agradable tener ese comportamiento tipo ternario en PowerShell!

Si no estás familiarizado con un operador ternario, básicamente se trata de usar una tabla hash o una construcción similar para tomar una decisión condicional basada en criterios.

If/Then en PowerShell

Para explicar el operador ternario de Powershell, comencemos primero con un ejemplo de una construcción if/then.

$CarColor = 'Blue'
if ($CarColor -eq 'Blue') {
    'The car color is blue'
} else {
    'The car color is not blue'
}

A primera vista, podrías no pensar que hay algo malo con ello. De hecho, realmente no lo hay pero esta condición podría ser probada igual de fácilmente con una sola línea (bajo mi límite personal de 115 caracteres).

Ahora construye una tabla hash de PowerShell con dos claves; $true y $false. Luego, haz que los valores sean lo que te gustaría que se mostrara si se cumple una condición que definas.

@{ $true = 'The car color is blue'; $false = 'The car color is not blue' }
[$CarColor -eq 'Blue']

A continuación, define la condición ($CarColor es Azul) y verifica si esa condición se cumple con $CarColor -eq 'Azul'.

$CarColor = 'Blue'
@{ $true = 'The car color is blue'; $false = 'The car color is not blue'}
$CarColor -eq 'Blue'

Ahora utiliza la condición ($CarColor -eq 'Azul') como una clave en ese hashtable. Haciendo esto, se realiza la verificación y luego se utiliza el resultado para buscar la clave en el hashtable.

Terminando el Operador Ternario de PowerShell

$CarColor = 'Blue'
@{ $true = 'The car color is blue'; $false = 'The car color is not blue'}[$CarColor -eq 'Blue']
A custom PowerShell ternary operator

¡En una línea! ¿No es mucho más conciso? En lugar de usar una instrucción if/then, estoy utilizando un hashtable y realizando una búsqueda basada en si $CarColor es igual a Azul o no. El índice resultante se muestra en la consola. Si deseas usar este método, es tan simple como completar estos espacios en blanco:

@{$true = $ResultyouwanttodoifTrue; $false = $ResultyouwantifFalse}[]

También podrías incluir más que solo $true y $false si lo deseas. Podrías agregar cualquier cantidad de condiciones en el hashtable y verificarlas. Es una forma fácil de reemplazar largas instrucciones if/then o declaraciones switch.

Ahora tienes un operador ternario personalizado de PowerShell que puedes comenzar a usar en tus scripts hoy mismo!

Source:
https://adamtheautomator.com/powershell-ternary/