0
我修改了CAML,現在它正在運行,並且不會通過列表中的所有項目循環。替代在分享點列表中的foreach項目
我正在尋找工作流狀態等於「發生錯誤」的列表項。我有以下代碼,它工作正常。但是,我的列表中有124,000個項目,代碼會遍歷列表中的每個項目。有沒有辦法將此限制爲工作流狀態(工作流名稱爲「存檔數據」)爲「發生錯誤」的項目。請建議。我添加了以下CAML並更改了代碼,但它仍然返回所有記錄。我用u2u測試了CAML,它返回了144條記錄。我添加了寫主機來獲得一個計數,並將該foreach評論爲測試。
# Terminates all workflow in a give list
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
$web = Get-SPWeb "http://inside.nov.com/sales/SouthEast"
$web.AllowUnsafeUpdates = $true
# $list name is list display name
$list = $web.Lists["New Orders"]
$CAML = '<Where>
<Eq>
<FieldRef Name="ArchiveData" />
<Value Type="WorkflowStatus">3</Value>
</Eq>
</Where>'
$query = new-object Microsoft.SharePoint.SPQuery
$query.Query = $CAML
$listitems = $list.GetItems($query)
Write-Host "Count: " $listitems.Count
#foreach ($item in $listItems)
#{
# foreach ($wf in $item.Workflows)
# {
# #Cancel Workflows
# [Microsoft.SharePoint.Workflow.SPWorkflowManager]::CancelWorkflow($wf)
# }
#}
$web.Dispose()
你不能循環通過具有特定屬性的項目,直到你知道該屬性......嗯,我猜。因此我覺得沒有辦法做到這一點,除了可能有保存元素ID或其他內容的輔助列表。 – Kilazur