过滤,虽然sharepoint列出了与PowerShell的项目

时间:2011-02-14 12:41:56

标签: powershell powershell-v2.0

我在下面试过但没有得到任何结果 不确定我是否做得很好。 我可以在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"] 
}

2 个答案:

答案 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"] 
    }
}