我在下面试过但没有得到任何结果 不确定我是否做得很好。 我可以在foreach或if语句中进行过滤 提前致谢
[DateTime] $CreatedDate = $item["Created"]
$convertedCreatedDate = $CreatedDate.ToString("yyyy-MM-dd")
$today = (Get-Date).AddDays(-1).ToString("yyyy-MM-dd")
foreach ($item in $list.items | where {$convertedCreatedDate -eq $today}) {
if ($list.items | where {$convertedCreatedDate -eq $today})
{
Write-Host $item["Created"]
}
Write-Host $item["Created"]
}
答案 0 :(得分:3)
您可以在上面的foreach
中使用复杂的表达式。我将它包装在@()
中以使代码更具可读性,并确保结果是一个数组(长度为0,1或n),例如:
foreach ($item in @($list.items | where {$convertedCreatedDate -eq $today})) {
您还可以使用DateTime上的Date
属性简化日期测试,例如:
$convertedCreatedDate = ([DateTime]$item["Created"]).Date
$today = (Get-Date).Date
您还可以在if
语句条件中放置复杂表达式,但PowerShell仅评估语句是$true
还是$false
。 PowerShell尝试采取类似的措施:
$list.items | where {$convertedCreatedDate -eq $today}
并将其转换为布尔值。基本上,如果管道评估为非空结果,则结果为$true
,否则为$false
。这可能不是你想要的。
答案 1 :(得分:2)
试试这个:
$today=(Get-Date).AddDays(-1).ToString("yyyy-MM-dd")
foreach ($item in $list.items) {
[DateTime]$CreatedDate=$item["Created"]
$convertedCreatedDate=$CreatedDate.ToString("yyyy-MM-dd")
if ($convertedCreatedDate -eq $today) {
Write-Host $item["Created"]
}
}