我修改了CAML,它现在正在工作,并没有通过列表中的所有项目循环。
我正在寻找工作流状态等于“发生错误”的列表项。我有以下代码,它工作正常。但是,我的列表中有124,000个项目,代码遍历列表中的每个项目。有没有办法将此限制为工作流状态(工作流名称为“存档数据”)为“发生错误”的项目。请建议。我添加了以下CAML并更改了代码,但它仍然返回所有记录。我用u2u测试了CAML,它返回了144条记录。我添加了write-host来获取计数并注释了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()
答案 0 :(得分:0)
我更新了原始代码并且它正在运行。使用SPQuery对象时,关键字“Query”不需要在CAML中。 SPQuery自动用关键字包装CAML。
由于