Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Descripción breve
Describe un comando de lenguaje que puede usar para ejecutar listas de instrucciones en función de los resultados de una o varias pruebas condicionales.
Descripción larga
Puede usar la instrucción If para ejecutar bloques de código si una prueba condicional especificada se evalúa como true. También puede especificar una o varias pruebas condicionales adicionales para ejecutarse si todas las pruebas anteriores resultan falsas. Por último, puede especificar un bloque de código adicional que se ejecute si ninguna otra prueba condicional anterior se evalúa como verdadera.
Sintaxis
En el ejemplo siguiente se muestra la sintaxis de la instrucción If:
if (<test1>)
{<statement list 1>}
[elseif (<test2>)
{<statement list 2>}]
[else
{<statement list 3>}]
Al ejecutar una instrucción If, PowerShell evalúa la expresión condicional <test1> como verdadera o falsa. Si <test1> es verdadera, <statement list 1> se ejecuta, y PowerShell sale de la instrucción If. Si <test1> es false, PowerShell evalúa la condición especificada por la instrucción condicional <test2>.
Para obtener más información sobre la evaluación booleana, vea about_Booleans.
Si <test2> es verdadera, <statement list 2> se ejecuta, y PowerShell sale de la instrucción If. Si ambos <test1> y <test2> se evalúan como falsos, se ejecuta el bloque de <statement list 3> código y PowerShell sale de la instrucción If.
Puede usar varias instrucciones Elseif para encadenar una serie de pruebas condicionales. Por lo tanto, cada prueba se ejecuta solo si todas las pruebas anteriores son falsas. Si necesita crear una instrucción If que contenga muchas instrucciones Elseif, considere la posibilidad de usar una instrucción Switch en su lugar.
Ejemplos:
La instrucción más If simple contiene un solo comando y no contiene ninguna instrucción Elseif ni ninguna instrucción Else. En el ejemplo siguiente se muestra la forma más sencilla de la instrucción If:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
En este ejemplo, si la variable $a es mayor que 2, la condición se evalúa como verdadera y se ejecuta la lista de instrucciones. Sin embargo, si $a es menor o igual que 2 o no es una variable existente, la If instrucción no muestra un mensaje.
Al agregar una instrucción Else, se muestra un mensaje cuando $a es menor o igual que 2. Como se muestra en el ejemplo siguiente:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
else {
Write-Host ("The value $a is less than or equal to 2," +
" is not created or is not initialized.")
}
Para refinar aún más este ejemplo, puede utilizar la instrucción Elseif para mostrar un mensaje cuando el valor de $a es igual a 2. Como se muestra en el ejemplo siguiente:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
elseif ($a -eq 2) {
Write-Host "The value $a is equal to 2."
}
else {
Write-Host ("The value $a is less than 2 or" +
" was not created or initialized.")
}
Uso de la sintaxis del operador ternario
PowerShell 7.0 introdujo una nueva sintaxis mediante el operador ternario. Sigue la sintaxis del operador ternario de C#:
<condition> ? <if-true> : <if-false>
El operador ternario se comporta como la instrucción if-else simplificada. La expresión <condition> se evalúa y el resultado se convierte en un valor booleano para determinar qué rama se debe evaluar a continuación:
- La expresión
<if-true>se ejecuta si la expresión<condition>es true - La expresión
<if-false>se ejecuta si la expresión<condition>es false
Por ejemplo:
$message = (Test-Path $path) ? "Path exists" : "Path not found"
En este ejemplo, el valor de $message es "Path exists" cuando Test-Path devuelve $true. Cuando Test-Path se devuelve $false, el valor de $message es "Ruta no encontrada".
$service = Get-Service BITS
$service.Status -eq 'Running' ? (Stop-Service $service) : (Start-Service $service)
En este ejemplo, si el servicio se está ejecutando, se detiene, y si su estado no es En ejecución, se inicia.