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 cómo se evalúan las expresiones booleanas.
Descripción larga
PowerShell puede tratar implícitamente cualquier tipo como un booleano . Es importante comprender las reglas que PowerShell usa para convertir otros tipos en valores de booleanos.
Conversión de tipos escalares
Un tipo de escalar es una cantidad atómica que solo puede contener un valor a la vez. Los siguientes tipos se evalúan como $false:
- Cadenas vacías como
''o"" - Valores NULL como
$null - Cualquier tipo numérico con el valor de
0
Ejemplos:
PS> $false -eq ''
True
PS> if ("") { $true } else { $false }
False
PS> if ($null) { $true } else { $false }
False
PS> if ([int]0) { $true } else { $false }
False
PS> if ([double]0.0) { $true } else { $false }
False
Los siguientes tipos se evalúan como $true:
- Cadenas no vacías
- Instancias de cualquier otro tipo que no sea de colección
Ejemplos:
# a non-collection type
PS> [bool]@{value = 0}
True
# non-empty strings
PS> if ('hello') { $true } else { $false }
True
PS> [bool]'False'
True
Tenga en cuenta que esto difiere de análisis explícito de cadenas:
PS> [bool]::Parse('false')
False
PS> [bool]::Parse('True')
True
PS> [bool]::Parse('Not True')
MethodInvocationException: Exception calling "Parse" with "1" argument(s):
"String 'Not True' was not recognized as a valid Boolean."
Conversión de tipos de colección
Las matrices son el tipo de colección más común en PowerShell. Estas reglas se aplican a cualquier tipo de colección que implemente la interfaz
- Las colecciones vacías siempre se
$false - El valor null especial que indica la ausencia de salida de un comando,
[System.Management.Automation.Internal.AutomationNull]::Valuesiempre es$false. - Las colecciones de elementos únicos se evalúan como el valor de booleano de su único elemento y uno.
- Las colecciones con más de 1 elemento son siempre
$true.
Ejemplos:
# Empty collections
PS> [bool]@()
False
PS> [bool](Get-ChildItem | Where-Object Name -eq 'Non-existent-File.txt')
False
# Single-element collections
PS> $a = @(0)
PS> [bool]$a
False
PS> $b = @(1)
PS> [bool]$b
True
# Multi-element collections
PS> $c = @(0,0)
PS> [bool]$c
True