我有这个
$web = Get-SPWeb "http://sharepoint/mysubsite"
$list=$web.Lists["Scanned Documents"]
foreach ($item in $list.Items | where {$_.Indicator -ne "Expired"}) {
write-host $item[“Expiry Date”];
$olddate = Get-Date -Date $item[“Expiry Date”]
$Now = Get-Date
if ($olddate -lt $Now) {
$item[“Indicator”] = "Expired";
} else {
$item[“Indicator”] = " ";
}
$item.SystemUpdate();
}
效果很好 - 但是列表可能非常大,所以想要更像这样的东西。
foreach ($item in $list.Items | Where-Object { ($_.Indicator -ne "Expired") -and (Get-Date -Date $_."Expiry Date" -lt $Now) }) {
#you get the idea
}
但我无法让它发挥作用 - 抱怨在Get-Date
内使用Where-Object
。
我试过
foreach ($item in $list.Items | Where-Object { ($_.Indicator -ne "Expired") -and $_."Expiry Date" -lt $Now }) {
#you get the idea
}
执行,但带回所有项目而不仅仅是过期日期。
答案 0 :(得分:0)
在片段中
... (Get-Date -Date $_."Expiry Date" -lt $Now) ...
-lt
被视为Get-Date
cmdlet的参数。要明确cmdlet参数列表结束的位置,只需将其包装在另一对或括号中,如下所示
... ((Get-Date -Date $_."Expiry Date") -lt $Now) ...
答案 1 :(得分:0)
感谢帮助人员 - 经过一些试验和错误后,我得到了
foreach ($item in $list.Items | where-Object {($_["Indicator"] -ne "Expired") -and ((Get-Date -Date $_["Expiry Date"]) -lt $Now) }) {