Вы можете использовать сложное выражение в foreach
, как вы делали выше.Я бы обернул его в @()
, чтобы сделать код немного более читабельным и убедиться, что результатом является массив (длина 0, 1 или n), например:
foreach ($item in @($list.items | where {$convertedCreatedDate -eq $today})) {
Вы также можете упроститьтестирование даты с использованием свойства Date
для DateTime, например:
$convertedCreatedDate = ([DateTime]$item["Created"]).Date
$today = (Get-Date).Date
Вы также можете поместить сложное выражение в условие оператора if
, но PowerShell будет только оценивать, является ли оператор $true
или $false
.PowerShell делает много принуждений, пытаясь взять что-то вроде:
$list.items | where {$convertedCreatedDate -eq $today}
и преобразовать его в логическое значение.По существу, если конвейер оценивает непустой результат, результат равен $true
, в противном случае это $false
.Это, вероятно, не то, что вы хотели.