I have just published a blogpost to get the author of all published workflows on a site collection for SharePoint on-premises. The script in this blog will also list all your SharePoint Online workflows for a specific site collection using CSOM. You just need to edit the top variables and the script will do the rest for you. You will be getting all SharePoint Online workflows for the URL you specify. You should run the below script for each site collection (or loop through all site collections) to retrieve all workflows on your environment. This information is helpful when planning to migrate to Microsoft Flow workflows or just list all workflows for a specific site.
You can simply add additional properties to the object like for example the last modified date. Please find the available properties at Microsoft
#Variables $url = "SharePoint Online URL" $userName = "Site Collection Administrator" $password = Read-Host "Please enter the password for $($userName)" -AsSecureString #Create credential variable and enable $SPOCredentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($userName, $password) $context = New-Object Microsoft.SharePoint.Client.ClientContext($url) $context.Credentials = $SPOcredentials #ObjectArray $WorkflowDetails=@() Function Get-WorkflowAssociations($WorkflowDetails, $SPOCredentials, $Web){ #Get Web information and subsites $context = New-Object Microsoft.SharePoint.Client.ClientContext($web) $context.Credentials = $SPOCredentials $web = $context.Web $context.Load($web) $context.Load($web.Webs) try{ $context.executeQuery() #check any subweb if present if ($web.Webs.Count -ne 0){ foreach ($subweb in $web.Webs){ Get-WorkflowAssociations -WorkflowDetails $WorkflowDetails -SPOCredentials $SPOCredentials -Web $subweb.url } } write-host $web.url $context.Load($web.Lists) $context.ExecuteQuery() foreach($list in $web.Lists) { $context.Load($list.WorkflowAssociations) $context.ExecuteQuery() foreach($wfAssociation in $list.WorkflowAssociations) { if($wfAssociation.name -notlike "*Previous Version*"){ $row=new-object PSObject add-Member -inputObject $row -memberType NoteProperty -name "SiteURL" -Value $web.Url add-Member -inputObject $row -memberType NoteProperty -name "ListTitle" -Value $list.Title add-Member -inputObject $row -memberType NoteProperty -name "WorkflowName" -Value $wfAssociation.Name $WorkflowDetails+=$row } } } return $WorkflowDetails } catch{ write-host "Error: $($_.Exception.Message)" -foregroundcolor green } } $WorkflowDetails = Get-WorkflowAssociations -WorkflowDetails $WorkflowDetails -SPOCredentials $SPOCredentials -Web $url
Start the SharePoint Online Management Shell as administrator or use the new SharePoint Online module
Next copy and paste the script to this PowerShell window
You will first be asked to enter your credentials for the account you specified. Enter your password and press enter
The script will start to fill in the WorkflowDetails array which can be used to view, sort or export the data.
It will also output each site it finds just so you can view the progress.