pueden tomar decisiones. ¿Cómo? Usando un concepto llamado lógica condicional. La instrucción If de PowerShell y las construcciones if/else son las formas comunes de definir condiciones.
al escribir scripts de PowerShell, lo hace teniendo en cuenta una o varias tareas específicas. Pero, una operación puede tener más de una posible acción basada en una o más condiciones. En esta situación es donde entra en juego la construcción If-Else de PowerShell.,
en este artículo, aprenderá qué es la construcción If-Else de PowerShell, comprenderá su sintaxis y cómo funciona. También aprenderá de los ejemplos algunas de las diferentes formas en que puede usar PowerShell If-Else para agregar manejo de lógica condicional en sus scripts.
Tabla de Contenidos
la Comprensión de la PowerShell If-Else Sintaxis
El PowerShell construcción if-else evalúa una o más expresiones condicionales. A continuación verá la sintaxis de la sentencia If. Este estilo a veces se llama control de flujo.,
if (<test1>) {<statement list 1>}
como puede ver en la sintaxis anterior, cada prueba está encerrada entre paréntesis ()
. Las pruebas pueden hacer uso de diferentes operadores, tales como operadores de comparación y operadores lógicos,
Las listas de instrucciones contienen el código destinado a ejecutarse si el resultado de la prueba se evalúa como verdadero.
entonces, hay tres sentencias posibles en un grupo de sentencias If. Estas son las declaraciones IF, ELSEIF y ELSE.,
- la instrucción
if
contiene la primera prueba a evaluar, seguida de la primera lista de instrucciones encerrada dentro de los corchetes{}
.La instrucción If de PowerShell es la única instrucción que debe estar presente. - la instrucción
elseif
es donde se agregan condiciones. Puede agregar varias sentencias ElseIf cuando tiene varias condiciones. PowerShell evaluará cada una de estas Condiciones de forma secuencial. - la instrucción
else
no acepta ninguna condición., La lista de instrucciones de esta instrucción contiene el código a ejecutar si todas las condiciones anteriores probadas son falsas.
Descripción del flujo lógico If-Else de PowerShell
para comprender mejor cómo funciona PowerShell If-Else, debe familiarizarse con su flujo lógico. El diagrama siguiente ilustra el flujo básico de PowerShell If-Else.,
Cuando se ejecuta la instrucción if, PowerShell se ejecuta a través de cada condición evaluando si el código devuelve verdadero o falso. A continuación se muestra un resumen del comportamiento:
- PowerShell evalúa la condición en la prueba 1.
- si el resultado de la prueba 1 devuelve true, se ejecutará el código dentro de la lista de instrucciones If y PowerShell saldrá de la instrucción If.,
- si el resultado de la prueba 1 devuelve false, PowerShell continúa evaluando la condición (prueba n) en la siguiente instrucción ElseIf.
- si el resultado de la prueba n devuelve false, PowerShell continúa evaluando la condición (prueba n) en la siguiente instrucción ElseIf, si existe otra instrucción ElseIf-o-
- si el resultado de la prueba n devuelve false, se ejecuta el código de la instrucción Else. A continuación, PowerShell saldrá de la instrucción If-O –
- Si el resultado de la prueba n devuelve true, se ejecutará el código de la instrucción ElseIf. A continuación, PowerShell saldrá de la instrucción If.,
usando la instrucción If-Else de PowerShell
las siguientes secciones son varios ejemplos de cómo usar la instrucción If-Else de PowerShell al escribir scripts. Las técnicas que aprenderá pueden guiarlo en el uso de la declaración If si se encuentra con una situación de la vida real que requiere su uso.
condición If – Else simple
comenzando con la más básica es la instrucción If simple. Debe usar una sola instrucción if cuando solo hay una condición para probar.
el ejemplo siguiente prueba si el valor de la variable $num
es mayor que 10., Si el resultado es true, entonces el resultado diciendo: "$num is greater than 10"
se mostrará en la pantalla. Si el resultado es false, PowerShell no hace nada porque solo hay una condición para probar.
$num = 11if ($num -gt 10) { "$num is greater than 10"}
Pegar el código anterior en PowerShell le dará el resultado que se muestra a continuación.,
ahora, si desea agregar una acción «fallback» predeterminada en lugar de dejar que PowerShell no haga nada el resultado de la prueba es False, puede agregar la instrucción else.
en el ejemplo siguiente, el código de la instrucción Else se ejecutará si el valor de la variable $num
no es mayor que 10.
$num = 9if ($num -gt 10){ "$num is greater than 10"}else{ "$num is NOT greater than 10"}
ejecutar el código modificado en PowerShell le da la salida que se muestra a continuación.,
a partir de PowerShell 7.0, se ha introducido una nueva sintaxis para la instrucción If utilizando un operador ternario. Las sentencias single If pueden hacer un buen uso de esta nueva sintaxis.
Usando el mismo ejemplo anterior, así es como se vería el código con el operador ternario.,
$num = 11$num -gt 10 ? "$num is greater than 10" : "$num is NOT greater than 10"
múltiples condiciones if-else con ElseIf
cuando hay varias condiciones para evaluar, debe agregar una o más instrucciones elseif. Cada instrucción ElseIf contiene la expresión de prueba y su propio código a ejecutar.,
el script de abajo, cuando se ejecuta, seguirá solicitando un nombre de fruta hasta que se emita la tecla CTRL+C
, o el Usuario ingrese la letra «X
«.
entonces, la instrucción If pasará por cada condición en secuencia hasta que encuentre una coincidencia. Si la entrada no coincide con ninguna de las condiciones, se ejecutará el código dentro de la instrucción Else.
a continuación se muestra la demostración de cómo se comporta el script anterior cuando se ejecuta en PowerShell.,
Reporting Free Disk Space Status
Free disk space reporting is one task that is common for administradores del sistema. La forma habitual de reportar la información de espacio de los discos fijos en una máquina Windows gira en torno al siguiente código.
Get-CimInstance -ClassName CIM_LogicalDisk | Where-Object {$_.DriveType -eq 3}
La información que el código anterior devolverá algo como el que se muestra en la siguiente captura de pantalla.,
como puede ver, la salida anterior muestra la letra de la unidad y los valores de espacio libre, junto con otras propiedades. Si bien la salida anterior está bien, no es intuitiva. La forma en que se presenta la información no indica si el espacio en disco está en un estado crítico o de advertencia o normal.,
usando una instrucción If de PowerShell para mejorar el código
Usando la instrucción If-Else de PowerShell, se puede lograr una salida más intuitiva agregando condiciones para verificar si el espacio libre está por encima o por debajo de ciertos umbrales. Y estos umbrales definirán el estado del espacio libre en disco.
el script de ejemplo a continuación realiza lo siguiente:
- Usando el valor de la variable
$Critical
, defina el umbral al que se etiquetará como crítico el porcentaje de espacio libre., - Usando el valor de la variable
$Warning
, defina el umbral al que se etiquetará el porcentaje de espacio libre como advertencia. - Obtenga toda la información del disco fijo de la máquina local
- Loop a través de toda la información del disco para determinar el espacio libre y etiquetar su estado.
- si el porcentaje de espacio libre es mayor que el valor de la variable
$Warning
, el estado del espacio en disco se etiqueta como normal., - si el porcentaje de espacio libre es mayor que el valor de la variable
$Critical
, el estado del espacio en disco se etiqueta como advertencia. - si el porcentaje de espacio libre es menor o igual al valor de la variable
$Critical
, el estado del espacio en disco se etiqueta como crítico.
- si el porcentaje de espacio libre es mayor que el valor de la variable
- Redactar las propiedades del objeto
'Drive Letter'
,'Drive Name'
,'Total Space (GB)'
,'Free Space (GB)'
,'Free Space (%)'
y'Status'
., - devuelve el informe final
copia el código de abajo y guarda el script con el nombre de archivoGet-DiskSpace.ps1
. No olvide cambiar los valores de las variables $Critical
y $Warning
si desea probar con diferentes umbrales.
una vez guardado el script, pruébelo llamando a su nombre en PowerShell. A continuación se muestra la demostración de ejemplo de cómo funciona Este script.,
como puede ver en la salida, el estado de cada disco está determinado por el porcentaje de espacio en disco libre, que fue el resultado de usar varias condiciones con PowerShell if-else.
If-Else múltiple y anidado
supongamos que tiene una instrucción if-Else con una condición definida en el bloque else
., Cuando se ejecuta la instrucción if-else, el bloque else
se invoca si el código dentro del bloque if
devuelve false.
dentro del bloque else
, debe realizar otra prueba condicional. Como resultado, necesita otra declaración If-Else. Este escenario se denomina anidado If-Else. La instrucción If-Else anidada se usa comúnmente si el IF-ELSE interno depende del resultado de la operación en el If-Else externo.
usar varias sentencias If-Else anidadas puede ser bastante confuso., El punto clave es recordar la ubicación del andamio y asegurarse de que indenta su código. La sangría de su código le ayudará a reconocer y separar fácilmente sus declaraciones If-Else.
ejemplo de sentencias If-Else múltiples / anidadas
el script de ejemplo a continuación muestra cómo las sentencias If-else múltiples y anidadas pueden depender del resultado de cada una. La lógica del siguiente código es la siguiente.
- Si
$SendEmail
es$false
, el script no hacer nada y salir., - Si
$SendEmail
es$true
, luego$From
y$To
variables no debe estar vacío o nulo. De lo contrario,$abortFlag
se establecerá en 1. - Si
$SendEmail
es$true
y el$CCEnabled
es$true
, luego$CC
variable no debe estar vacío o nulo. De lo contrario,$abortFlag
se establecerá en 1., - Si
$SendEmail
es$true
y el$BCCEnabled
es$true
, luego$BCC
variable no debe estar vacío o nulo. De lo contrario,$abortFlag
se establecerá en 1. - si el valor
$abortFlag
es 1, el script saldrá en este punto y no continuará. - si el valor
$abortFlag
es 0, el script continúa hasta el final.
Copie el código a continuación y guárdelo como Send-MyMail.ps1
. No cambie ningún valor todavía.,
Una vez que haya guardado el archivo, ejecútelo en PowerShell como se muestra a continuación. La siguiente demostración muestra el resultado del script cuando los valores de las variables no cambian.
a continuación, edite el script y actualice todas las variables correctamente como este fragmento de código a continuación.
después de editar las variables, guarde el script y ejecútelo de nuevo. Debería mostrarte el mismo resultado, como se ve a continuación.,
ahora, modifique las variables y pruebe diferentes combinaciones para probar cómo se verá afectado El If-Else anidado. Modificar y probar por su cuenta le ayudaría a comprender mejor la lógica.
resumen
en este artículo, aprendió sobre la construcción de lógica condicional: la construcción If – Else de PowerShell., El uso de la instrucción If-Else permite a los scripters formular lógica condicional y dirigir las acciones de sus scripts en función de los resultados de las pruebas.
con los ejemplos que se muestran en este artículo, debería haber aprendido formas y técnicas sobre cómo usar la declaración If-Else al crear un código basado en decisiones. If-Else puede ser simple usando una sola condición y se vuelve más complejo mientras profundiza en las sentencias If-Else anidadas.
¿Qué piensas de la declaración If-Else? ¿Es esto algo que crees que usarías más y más después de leer este artículo?, ¿Qué otros propósitos puedes pensar en dónde puedes aplicar el conocimiento que has adquirido aquí?
más información
- acerca de If
- volver a lo básico: el bucle de PowerShell foreach