Umzug von Nintex in der Cloud (Teil 2) – oder: wo ist Nintex in Office365 überall aktiv?

Umzug von Nintex in der Cloud (Teil 2) – oder: wo ist Nintex in Office365 überall aktiv?

Umzug von Nintex in der Cloud (Teil 2) – oder: wo ist Nintex in Office365 überall aktiv?

In meinem letzten Beitrag hatte ich ja schon darüber berichtet wie ich meinen Nintex for Office365 Tenant nach Europa umgezogen habe, und dann vor der Herausforderung stand für alle Webs und Subwebs herauszufinden wo ich Nintex-Workflows verwendet habe um diese neu zu veröffentlichen

Wenn man denk es geht nicht mehr

kommt von irgendwo `ne PowerShell her

Es ist also sofort klar, dass hier nur PowerShell weiterhelfen kann!

Also mal ganz langsam und der Reihe nach. Zunächst will ich für eine Website wissen, ob dort Nintex Workflow for Office365 überhaupt aktiviert ist.

$userName = "[username]@[mydomain.fqdn]"
$siteColUrl = "https://[tenant].sharepoint.com/sites/[mysite]"

Add-Type -Path "d:\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "d:\Microsoft.SharePoint.Client.dll"

$cred = Get-Credential -UserName $userName -Message "Enter SPO credentials"
$spoCred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials ($cred.UserName, $cred.Password)

$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteColUrl)
$ctx.Credentials = $spoCred
$web = $ctx.Web
$ctx.Load($web)

$addInInstances=[Microsoft.SharePoint.Client.AppCatalog]::GetAppInstances($ctx,$web)
$ctx.Load($addInInstances)
$ctx.ExecuteQuery()
$webUrl = $web.Url

$addInInstances | % {
    if ($_.ProductId -eq "353e0dc9-57f5-40da-ae3f-380cd5385ab9") {
        Write-Host "Found Nintex Forms for Office 365 on $webUrl; got to $($_.AppWebFullUrl)"
        Write-Host "... Client-ID: $($_.AppPrincipalId)"
    }
    if ($_.ProductId -eq "5d3d5c89-3c4c-4b46-ac2c-86095ea300c7") {
        Write-Host "Found Nintex Workflow for Office 365 on $webUrl; got to $($_.AppWebFullUrl)"
        Write-Host "... Client-ID: $($_.AppPrincipalId)"
    }
}

Betrachten wir das Skript mal ein wenig:

  1. Zu Beginn wird Benutzername und die zu untersuchende URL festgelegt
  2. Die DLLs für das Client-Side-Object-Modell (CSOM) werden geladen
  3. Die Credentials werden vom Benutzer abgefragt und für die weitere Ausführung zwischengespeichert
  4. Anschließend werden alle installierten Apps des aktuellen Webs abgerufen (Zeile 15)
  5. Am Ende werden alle Apps durchsucht, ob Nintex dort enthalten ist

Nun muss ich dieses Vorgehen rekursiv auch für alle Sub-Webs meines aktuellen Webs machen. Dazu verpacke ich die Zeilen 12 bis 29 in eine Funktion Execute-NintexAddFinder. Außerdem erstelle ich eine Funktion, die Sub-Webs rekursiv untersucht.

function Process-SubWebs() {
    param (
        [Microsoft.SharePoint.Client.Web] $rootWeb = $(throw "Please provide a root web"),
        [Microsoft.SharePoint.Client.ClientContext] $ctx = $(throw "Please provide a context")
    )
    $webs = $rootWeb.Webs
    $ctx.Load($webs)
    $ctx.ExecuteQuery()

    $webs | % {
        Write-Progress -Activity "Analysing Site-Collections" -Status "Processing $siteColUrl" -PercentComplete ($i / $siteCount * 100) -Id 1 -CurrentOperation "Inspecting Web $($_.Title)"
        Execute-NintexAddFinder -web $_ -ctx $ctx
        Process-SubWebs -rootWeb $_ -ctx $ctx
    }
}

Nun muss die Funktion Process-SubWebs nur noch für alle Site-Collections einmal aufrufen. Dazu verwende ich die PnP-PowerShell-Cmdlets:

$adminUrl = "https://[tenant]-admin.sharepoint.com/"
Connect-PnPOnline -Url $adminUrl -Credential $cred
$allSites = Get-PnPSite -Limit ALL

$sites | % {
    $siteColUrl = $_.Url
    $ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteColUrl)
    $ctx.Credentials = $spoCred
    $rootWeb = $ctx.Web

    $ctx.Load($rootWeb)
    $ctx.ExecuteQuery()

    Execute-NintexAddFinder -web $rootWeb -ctx $ctx
    Process-SubWebs -rootWeb $rootWeb -ctx $ctx
}

Somit habe ich also eine Übersicht wo über Nintex Workflow for Office365 aktiviert ist.

Was nun noch fehlt ist eine Liste alle Workflows auf der jeweiligen Site – insbesondere alle Workflows aller Listen. Wie man das bekommt beschreibe ich im nächsten Teil.

2 thoughts on “Umzug von Nintex in der Cloud (Teil 2) – oder: wo ist Nintex in Office365 überall aktiv?

  1. Pingback: Umzug von Nintex in der Cloud (Teil 1) - oder: Nintex für Office365 kommt nach Europa - busitec Blog

  2. Pingback: Umzug von Nintex in der Cloud (Teil 3) – Oder wo sind denn hier die Workflows? - busitec Blog

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.