Al igual que muchos otros lenguajes, PowerShell tiene instrucciones para ejecutar código de forma condicional en sus scripts. Una de esas declaraciones es la declaración if. Hoy vamos a profundizar en uno de los comandos más fundamentales de PowerShell.,
- Índice
- ejecución Condicional
- La instrucción if
- los operadores de Comparación
- -eq para la igualdad
- -ne no es igual
- -gt -ge -lt -le de mayor que o menor que
- -como comodín partidos
- coincidencia de expresión regular
- -es de tipo
- -eq para la igualdad
- Colección operadores
- contiene
- en
- operadores Lógicos
- -no
- !,pressions
- Checking for null null
- Variable assignment
- Alternate execution path
- else
- anidada if
- elseif
- switch
- Pipeline
- Array inline
- Simplify complex operations
- Line continuation
- pre-cálculo de resultados
- múltiples sentencias if
- usando funciones
- Manejo de errores
- palabras finales
ejecución condicional
sus scripts a menudo necesitarán tomar decisiones y realizar una lógica diferente basada en esas decisiones., Esto es lo que quiero decir con ejecución condicional. Tiene una instrucción o valor para evaluar, luego ejecute diferentes secciones de código basadas en esa evaluación. Esto es exactamente lo que hace la instrucción
if
.La instrucción if
Aquí es un ejemplo muy básico de la etiqueta
if
instrucción:$condition = $true if ( $condition ) { Write-Output "The condition was true" }
La primera cosa que el
if
declaración que hace es evaluar la expresión en paréntesis., Si evalúa a$true
, entonces se ejecuta elscriptblock
en las llaves. Si el valor era$false
, entonces saltaría ese bloque de scripts.en el ejemplo anterior, la instrucción
if
estaba evaluando la variable$condition
. Era de$true
y habría ejecutado elWrite-Output
comando dentro del bloque script.en algunos idiomas, puede colocar una sola línea de código después de la instrucción
if
y se ejecutará., Este no es el caso en PowerShell. Debe proporcionar unscriptblock
completo con Llaves para que funcione correctamente.operadores de comparación
lo más común para lo que usarás la instrucción
if
es comparar dos elementos entre sí. Powershell tiene operadores especiales para diferentes escenarios de comparación. Cuando se utiliza un operador de comparación, el valor del lado izquierdo se compara con el valor del lado derecho.,-eq para Igualdad
el
-eq
hace una comprobación de igualdad entre dos valores para asegurarse de que son iguales entre sí.$value = Get-MysteryValue if ( 5 -eq $value ) { # do something }
En este ejemplo, estoy tomando un valor conocido de
5
y comparando mi$value
para ver si coinciden.un posible caso de uso es comprobar el estado de un valor antes de realizar una acción sobre él. Puede obtener un servicio y comprobar que el estado se estaba ejecutando antes de llamar a
Restart-Service
en él.,es común en otros lenguajes como C# usar
==
para la igualdad (por ejemplo:5 == $value
), pero eso no funciona con powershell. Otro error común que la gente comete es usar el signo igual (por ejemplo:5 = $value
) que está reservado para asignar valores a variables. Al colocar su valor conocido a la izquierda, hace que ese error sea más incómodo de hacer.este operador (y otros) tienen algunas variaciones.,
-
-eq
igualdad insensible a mayúsculas y minúsculas -
-ieq
igualdad insensible a mayúsculas y minúsculas -
-ceq
igualdad p> muchos operadores tienen un operador relacionado que está comprobando el resultado opuesto.-ne
verificará que los valores no sean iguales entre sí.if ( 5 -ne $value ) { # do something }
el Uso de esto para asegurarse de que la acción sólo se ejecuta si el valor no es
5
., Un buen uso-casos donde sería comprobar si un servicio estaba en el estado de ejecución antes de intentar e iniciarlo.variaciones:
-ne
case insensitive not equal-ine
case insensitive not equal-cne
case sensitive not equal
son solo variaciones inversas de
-eq
. Agruparé estos tipos cuando enumere variaciones para otros operadores.,-gt -ge -lt -le de mayor que o menor que
Estos operadores se utilizan cuando comprueba si un valor es mayor o menor que otro valor. El
-gt -ge -lt -le
significa GreaterThan, GreaterThanOrEqual, LessThan y LessThanOrEqual.,eater than or equal, case insensitive -
-cge
greater than or equal, case sensitive -
-lt
less than -
-ilt
less than, case insensitive -
-clt
less than, case sensitive -
-le
less than or equal -
-ile
less than or equal, case insensitive -
-cle
less than o igual, sensible a mayúsculas y minúsculas
no se por qué utilizarías las opciones sensibles a mayúsculas y minúsculas para estos operadores.,
-como coincidencias de comodines
PowerShell tiene su propia sintaxis de coincidencia de patrones basada en comodines y puede usarla con el operador
-like
. Estos patrones comodín son bastante básicos.-
?
coincidirá con cualquier carácter -
*
coincide con cualquier número de caracteres
$value = 'S-ATX-SQL01' if ( $value -like 'S-*-SQL??') { # do something }
Es importante señalar que el patrón coincide con la cadena entera., Si necesita hacer coincidir algo en el medio de la cadena, entonces necesitará colocar el
*
en ambos extremos de la cadena.,iv> - !,pressions
- -no