[SP201x] Terminating runnning workflows with Powershell
After importing / restoring a site collection from a different environment, you might have the need to terminate all of the running workflows. For instance, to stop them from e-mailing people or firing off other events which should not be fired from within your local dev environment. Whatever reason you might have, here is a little Powershell script which can help you do so:
Add-PSSnapIn Microsoft.SharePoint.Powershell $url = "http://localhost:1234" $web = Get-SPWeb $url $web.AllowUnsafeUpdates = $true; try { $i = 0 for ($i = $web.Lists.Count; $i -ge 0; $i--) { foreach ($item in $web.Lists[$i].Items) { foreach ($workflow in $item.Workflows) { if ($workflow.IsCompleted -ne $true) { [Microsoft.SharePoint.Workflow.SPWorkflowManager]::CancelWorkflow($workflow) } } } } foreach ($workflow in $web.Workflows) { if ($workflow.IsCompleted -ne $true) { [Microsoft.SharePoint.Workflow.SPWorkflowManager]::CancelWorkflow($workflow) } } } finally { $web.AllowUnsafeUpdates = $false $web.Update() $web.Dispose() }
Leave a Comment