Removing old workflow instances with PowerShell
As most of SharePoint professionals will know, there are two basic types of workflow in SharePoint. Some workflows are authored in SharePoint Designer whilst others are created within Visual Studio. This article is aimed at those who author workflows in SPD.
Each time a new workflow is published within SPD, a new instance is added. What this means is that each time a workflow is published, it overwrites a previous version. If an administrator were to check the active workflows, they'd see a history that looks like this
http://baron72.files.wordpress.com/2014/03/032514_1534_removingold1.png
I don't believe that there is any performance overhead for having these historical workflows listed but wouldn't it be nice to have a way to remove these? This article is going to show you how.
- Download this PowerShell Script from the TechNet Gallery. Download it somewhere that is easy to find, such as C:/Scripts
- Right Click on the script and select Open
- Look for the following variables and change them as requird
- $web: Include the URL of your Site
- $listToCancel: Use the display name of the list / library that has the workflow versions you want to delete
- $wfToKeep: Use the name of the Workflow to be pruned
- Save and close the script
- Right click and select Run with PowerShell. Click Yes to the script. You'll see this as the script has been downloaded from TechNet rather than written locally
http://baron72.files.wordpress.com/2014/03/032514_1534_removingold2.png
- Once the script has run, return to your workflow history page. You should see only one version of the workflow as below
http://baron72.files.wordpress.com/2014/03/032514_1534_removingold3.png
Caveats
Please be mindful of any workflow instances that may still be in operation. The script won't be too choosy in what it removes.
Credits
Thanks to Matthew Yarlett for looking over this script..