Inzwischen haben wir mit dem letzten Blogpost ja eine Übersicht alle Webs, in denen Nintex Workflow for Office365 aktiviert worden ist. Nun geht es also um die Frage: was für Workflows gibt es in der jeweiligen Site und welche Workflows sind mit Nintex erstellt und welche ggf. nicht?
Auch hier hilft PowerShell wieder weiter.
Add-Type -Path "d:\Microsoft.SharePoint.Client.WorkflowServices.dll" $clientId = "client_id=" + [System.Web.HttpUtility]::UrlEncode($appPrincipalId) $wfmgr = New-Object Microsoft.SharePoint.Client.WorkflowServices.WorkflowServicesManager($ctx, $web) $wfdpl = $wfmgr.GetWorkflowDeploymentService() $wfdefs = $wfdpl.EnumerateDefinitions($false) $ctx.Load($wfdefs) $ctx.Load($web) $ctx.ExecuteQuery() $webUrl = $web.Url $items = @() $wfdefs | % { $item = @{ Name = $_.DisplayName Region = $_.Properties["NWConfig.Region"] Designer = $_.Properties["NWConfig.Designer"] Entitlement = $_.Properties["NWConfig.WorkflowEntitlementType"] Author = $_.Properties["AppAuthor"] LastModified = $_.Properties["ModifiedBy"] LastEditor = $_.Properties["SMLastModifiedDate"] Type = $_.RestrictToType ScopeId = $_.RestrictToScope Published = $_.Published $lauchUrl = $webUrl + "/_layouts/15/appredirect.aspx?" $lauchUrl += $clientId $lauchUrl += "&redirect_uri=" + [System.Web.HttpUtility]::UrlEncode("https://workflowo365.nintex.com/Hub.aspx?{StandardTokens}&ListId={" + $_.RestrictToScope + "}&AppVersion=1.0.3.0") Link = $lauchUrl } $items += $item } $items | Export-Csv -Path "workflow_inventory.csv" -NoTypeInformation -Delimiter ";" -Append
Zunächst brauchen wir eine weiter DLL aus dem CSOM-Paket um auf die Workflows zuzugreifen. Gucken wir uns den Code mal wieder genauer an:
Execute-NintexAddFinder
bereits die AppPrincipalId
der jeweiligen App-Instanz von Nintex Workflow for Office365 ermittelt – diese brauchen wir nun in Zeile 2WorkflowServicesManager
auslesenAm Ende können wir diese Informationen in eine CSV-Datei schreiben. Diese kann dann mit Excel geöffnet werden und es können alle Workflows gefiltert werden, die von Nintex stammen (z.b. die eine Designer-Version haben). Dazu kann dann die URL aufgerufen werden und der Workflow kann neu veröffentlicht werden.
Dank PowerShell dauert nun das durchsuchen meiner 250 Site-Collections nur wenige Minuten und ich erhalten eine Liste aller Workflows. Diese muss ich dann zwar noch immer manuell veröffentlichen, aber immerhin kann direkt an die jeweiligen Galleries springen!