Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Краткое описание
Описывает, как вычисляются логические выражения.
Подробное описание
PowerShell может неявно рассматривать любой тип как логический. Важно понимать правила, которые PowerShell использует для преобразования других типов в логические значения.
Преобразование из скалярных типов
Скалярный тип — это атомарное количество, которое может содержать только одно значение за раз. Следующие типы оцениваются следующим $false
образом:
- Пустые строки, например
''
или""
- Значения NULL, такие как
$null
- Любой числовой тип со значением
0
Примеры:
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
Следующие типы оцениваются следующим $true
образом:
- Непустые строки
- Экземпляры любого другого типа, отличного от коллекции
Примеры:
# a non-collection type
PS> [bool]@{value = 0}
True
# non-empty strings
PS> if ('hello') { $true } else { $false }
True
PS> [bool]'False'
True
Обратите внимание, что это отличается от явного синтаксического анализа строк:
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."
Преобразование из типов коллекций
Массивы — это наиболее распространенный тип коллекции в PowerShell. Эти правила применяются к любым типам коллекции, реализующим интерфейс IList .
- Пустые коллекции всегда являются
$false
- Специальное значение NULL, указывающее отсутствие выходных данных из команды,
[System.Management.Automation.Internal.AutomationNull]::Value
всегда$false
. - Коллекции одноэлементных элементов оценивают логическое значение одного и единственного элемента.
- Коллекции с более чем 1 элементом всегда
$true
.
Примеры:
# 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
См. также
PowerShell