Skip to main content
Search Again

We think these articles could help you:

    See More
    Nintex Knowledge Base

    Finding Workflows with PowerShell

    Status: Validated

    TOPIC
    How to find all workflows in a farm, using PowerShell. 
    INSTRUCTIONS
    Run the following script to build a report of all the workflows within the farm:
    #Adding SharePoint Powershell Snapin
    Add-PSSnapin Microsoft.SharePoint.PowerShell -EA silentlycontinue
    
    # The Line below will suppress error messages, uncomment if you are seeing errors but still receiving results.
    
    #$ErrorAction = 'silentlycontinue' 
    
    # Loading SharePoint and Nintex Objects into the PS session
    [void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
    [void][System.Reflection.Assembly]::LoadWithPartialName("Nintex.Workflow")
    [void][System.Reflection.Assembly]::LoadWithPartialName("Nintex.Workflow.SupportConsole")
    [void][System.Reflection.Assembly]::LoadWithPartialName("Nintex.Workflow.Administration")
    [void][System.Reflection.Assembly]::LoadWithPartialName("Nintex.Forms.SharePoint.Administration")
    
    # Grab Nintex Config database name
    
    $CFGDB = [Nintex.Workflow.Administration.ConfigurationDatabase]::OpenConfigDataBase().Database
    
    # Creating instance of .NET SQL client
    $cmd = New-Object -TypeName System.Data.SqlClient.SqlCommand
    
    $cmd.CommandType = [System.Data.CommandType]::Text
    
    # Begin SQL Query
    $cmd.CommandText = "SELECT
                   i.WorkflowName,
                   i.SiteID,
                   i.WebID,
                   i.listid,
          pw.Author
    FROM dbo.WorkflowInstance I
    inner join WorkflowProgress P
                   ON I.InstanceID = P.InstanceID
    Inner join [$CFGDB].dbo.publishedworkflows pw
    on i.WorkflowID = pw.WorkflowId
    GROUP BY GROUPING SETS((i.siteid, i.webid, i.listid, i.workflowname, pw.Author), ());"
    
    
    $indexes = @()
    
    # Call to find all Nintex Content Databases in the Nintex Configuration Database, then execute the above query against each. 
    foreach ($database in [Nintex.Workflow.Administration.ConfigurationDatabase]::GetConfigurationDatabase().ContentDatabases)
    {
    
    $reader = $database.ExecuteReader($cmd)
    
    # Creating a table
    while($reader.Read())
    {
    $row = New-Object System.Object
    
    if(![string]::IsNullOrEmpty($reader["SiteID"])){
    $Site = $(Get-SPSite -identity $reader["SiteID"])
    }
    
    if(![string]::IsNullOrEmpty($reader["WebID"])){
    $SubSite = $Site.Allwebs[[Guid]"$($reader["WebID"])"]
    }
    if(![string]::IsNullOrEmpty($reader["ListID"])){
    $List = $SubSite.Lists[[Guid]"$($reader["ListID"])"]
    }
    
    #Adding Query results to table object
    $row | Add-Member -MemberType NoteProperty -Name "Workflow Name" -Value $reader["WorkflowName"]
    $row | add-member -MemberType NoteProperty -Name "Database" -value $Site.ContentDatabase.Name
    $row | Add-Member -MemberType NoteProperty -Name "Site Collection" -Value $Site.Url
    $row | Add-Member -MemberType NoteProperty -Name "Subsite" -Value $SubSite
    $row | Add-Member -MemberType NoteProperty -Name "List" -Value $List.title
    $row | Add-Member -MemberType NoteProperty -Name "Author" -Value $reader["Author"]
    
    $indexes += $row
    }
    }
    
    #Print results on screen
    $indexes  | FT -autosize
    Write-host "Total Workflows in all DataBases:" $indexes.Count
    ADDITIONAL INFORMATION
    Note:
    • Workflows that have been designed, but never run, will not show in the results as there is no record of them in the Nintex database.
    • If a purge has been recently performed on the Nintex databases, the workflows might not show up.
    • If errors occur when running the script, allow the script to complete. The script uses what is located in the Nintex database and resolves certain information, such as SiteID, Site collection URL, etc., and might report an error if a Site Collection, Site, List and/or workflow is not found. This will not affect the overall results of the report.
    RELATED LINKS
    • Was this article helpful?