Если вы обычно хотите отобразить логический вывод скрипта / командлета / функции на 'Yes'
или 'No'
, вы можете использовать что-то вроде следующего:
('No', 'Yes')[(...)] # map output of ... to 'Yes', if $True, to 'No' otherwise
Например:
PS> ('No', 'Yes')[((Get-Date).DayOfWeek -eq 'Monday')]
Yes # on 2018-05-28
Здесь используется тот факт, что индексирование ([ ]
) приводит к аргументу целое число ([int]
) и логическое значение ([bool]
)) переводится в целое число путем сопоставления $False
с 0
и $True
с 1
.
Обратите внимание, что если команда ((...)
) возвращает что-то, что не может быть приведено к целому числу,$null
возвращается как общий результат (например, (1, 2)['not-a-number']
).
Для принудительного любого вывода , независимо от его типа, в логическое значение и, следовательно, в любой индекс 0
или 1
(который в данном случае соответствует 'No'
или 'Yes'
), приведен к [bool]
:
('No', 'Yes')[[bool] (...)]
, который отобразит $False
, 0
,или пустой вывод (пустая строка, $null
, пустые коллекции, ...) в 'No'
, а все остальное (включая $True
) в 'Yes'
.