Hi All,
I have written the script to retrieve the workflow instances that associated across a specific site collection.
The script will iterate through each item in the list/library for all sub sites in the site collection and provides the workflows associated with the status, status url, item id, workflow name, workflow instance id.
I have written the script to retrieve the workflow instances that associated across a specific site collection.
The script will iterate through each item in the list/library for all sub sites in the site collection and provides the workflows associated with the status, status url, item id, workflow name, workflow instance id.
param ([boolean] $writeToFile = $true)
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
Add-Type @'
public class workflowItem
{
public string weburl;
public string ListURL;
public string Item;
public string workflowname;
public string status;
public string InstanceId;
public string url;
}
'@
$itemsCollection = New-Object 'System.Collections.Generic.List[System.Object]';
$exportfile = $currentdatetime = get-date -format "yyyy-MM-d.hh-mm-ss";
$exportVersionLocation=$exportfolder+"\workflowstats"+$exportfile+".csv"
#Counter variables
$webcount = 0
$listcount = 0
$associationcount = 0
$sitename = Read-Host "Enter site collection url"
$site=Get-SPSite -Identity $sitename
$webs=$site.Allwebs
if($webs.count -ge 1)
{
foreach($web in $site.Allwebs)
{
write-host $web
#Grab all lists in the current web
$lists = $web.Lists
foreach($list in $lists)
{
$associations = @()
#Get all workflows that are associated with the current list
foreach($listassociation in $list.WorkflowAssociations)
{
$associations += $($listassociation.name)
}
$listcount +=1
if($associations.count -ge 1 -and $list.items.count -ge 1)
{
foreach($item in $list.items)
{
foreach($wf in $item.workflows)
{
$wfItem = New-Object workflowItem
$wfItem.weburl=$web.url
$wfItem.ListURL=$list.Title
$wfitem.Item=$item.Title
$ass1=$wf.parentassociation
$wfItem.workflowname=$ass1.Name
$wfItem.status=$wf.InternalState
$wfitem.InstanceId=$wf.InstanceID.Tostring()
$wfitem.url=$wf.StatusUrl
$itemsCollection.Add($wfItem);
}
}
}
}
}
$webcount +=1
$web.Dispose()
}
$itemsCollection | export-csv "$exportVersionLocation" -noType
The csv file will be generated in the root directory where the script placed and executed,
No comments:
Post a Comment