In so ziemlich jedem SharePoint Projekt stellt sich früher oder später die Frage, wie angepasste Site Templates erstellt und verwaltet werden können. Im klassischen SharePoint können diese erstellt und mit Visual Studio einer Farm hinzugefügt werden. Dabei gibt es zwar ein paar Restriktionen, aber im Allgemeinen funktioniert das gut.
Eine Alternative zu doch der sehr aufwendigen Verwaltung mit Visual Studio ist Office PnP. Dies sind PowerShell Scripts, welche einer vorhandenen Site Funktionalitäten hinzufügen. Dies geht natürlich auch bei SharePoint Online, aber dort gibt es noch eine bessere Lösung: Die Arbeit mit Sitedesigns. Ein Sitedesign ist dabei nicht nur eine optische Anpassung, sondern ein Design umfasst auch Listen, Berechtigungen, Navigationslinks, Flows und vieles mehr. Dieser Artikel erläutert, wie man ein Sitedesign in SharePoint Online erstellt und verwaltet.
Begriffe und Vorbereitung
Um mit Websitedesign zu arbeiten, muss das aktuelle SharePoint Online PowerShell Modul installiert sein. Wenn nicht vorhanden, eine administrative PowerShell Session öffnen und darin den folgenden Befehl ausführen:
Install-Module -Name Microsoft.Online.SharePoint.PowerShell
Dies kann auf einem lokalen Rechner passieren oder in einer serverlosen Umgebung wie z.B. Azure Functions. Dort wird das Modul natürlich anders installiert. Ist das Modul schon vorhanden, aber vielleicht ein älterer Stand, hilft ein
Update-Module -Name Microsoft.Online.SharePoint.PowerShell
Alle Befehle in diesem Artikel gehen davon aus, dass das Modul installiert und der Benutzer sich an SharePoint Online angemeldet hat mit
Connect-SPOService -Url https://<Mandantenname>-admin.sharepoint.com -Credential <SharePoint online Login>
Ein Websitescript ist eine JSON Datei, welche Verben enthält. Diese Verben sind Aktionen, die auf einer Website ausgeführt werden sollen. Aktionen können Unteraktionen haben. So kann eine Liste erstellt (Aktion) und dieser Liste neue Felder hinzugefügt werden (Unteraktion). Es könnten auch erst Inhaltstypen- und Spalten erzeugt und diese der Liste hinzugefügt werden. Eine komplette Referenz der JSON Verben finden sich unter https://docs.microsoft.com/de-de/sharepoint/dev/declarative-customization/site-design-json-schema
Ein Websitescript wird einem Mandanten hinzugefügt und über eine ID eindeutig identifiziert. Über den Befehl Get-SPOSiteScript kann man diese finden. Wird der Befehl ohne weitere Parameter aufgerufen, zeigt er alle Websiteskripte im Mandanten an. Vor dem ersten eigenen Websitescript liefert er allerdings nichts zurück.

Ein Sitedesign umfasst ein oder mehrere Scripts und führt diese aus, wenn das Design angewendet wird. Es muss also bei dem Erstellen eines Design mindestens ein Script hinzugefügt werden. Das Script muss im Mandanten schon vorhanden sein und wird über seine ID identifiziert. Der folgende Code erstellt ein Script im Mandanten und erstellt anschließend ein Design.
$siteScript = Get-Content '<Pfad zum Script>' -Raw
$scriptID = Add-SPOSiteScript `
-Title "Website Script example" `
-Content $siteScript `
-Description
Add-SPOSiteDesign `
-Title "Site design example" `
-WebTemplate "64" `
-SiteScripts ($scriptID).Id `
-Description "Just example design"
Der Befehl Add-SPOSiteDesign hat dabei einige interessante Parameter. So können dem Design zum Beispiel noch ein Bild mitgegeben werden, welches bei der Auswahl des Designs angezeigt wird. Am wichtigsten ist aber der Parameter -WebTemplate. Diese legt fest, an welchen Vorlagentyp das Design gebunden wird. Dabei können nur moderne Websitevorlagen verwendet werden und es gelten die folgenden Werte für den Parameter:
- 64 = Teamweb
- 68 = Communication Web
- 1 = Groupless Team Site
Wird jetzt eine neue Site erstellt, kann das Design ausgewählt werden.

Soll das Design auf alle neu erstellt Websites standardmäßig angewendet werden, soll hilft der Parameter -IsDefault.
Ein Design auf eine vorhandene Site anwenden
Natürlich kann ein Design auch auf eine schon vorhandene Site angewendet werden. Dazu muss das Design allerdings vorher veröffentlich wurden und die ID des Designs bekannt sein. Ist dies nicht der Fall, kann man sich mit Get-SPOSiteDesign alle veröffentlichen Designs anzeigen lassen.
Um ein vorhandenes Design anzuwenden, benutzen Sie bei weniger als 30 Aktionen und Unteraktionen in den Scripts den Befehlt Invoke-SPOSiteDesign. Wenn Sie in den Scripts mehr als 30 Aktionen und Unteraktionen ausführen, müssen Sie stattdessen Add-SPOSiteDesignTask verwenden. Dieser Befehl hat ein Limit von 300 Aktionen oder 100.000 Zeichen. Die Argumente sind analog. Ein typischer Aufruf könnte so aussehen:
Invoke-SPOSiteDesign -weburl 'https://ntscript.sharepoint.com/sites/training' -Identity 68c78fbb-b60b-5678-1234-840329934676
Ein Design aus einer vorhandenen Site verwenden
Natürlich kann man alles von Anfang an in ein Script schreiben um ein gewünschtes Design zu erreichen. Einfacher ist aber möglicherweise sich zuerst eine Vorlage zusammen zu klicken und dann diese Vorlage zu exportieren. Das geht einfach mit dem Befehl Get-SPOSiteScriptFromWeb wenn man ein ganzes Web als Vorlage verwenden möchte oder Get-SPOSiteScriptFromList wenn es eine Liste sein soll. Beide Befehle geben JSON zurück, welches dann noch als Datei abgelegt werden muss. Der folgende Code erledigt dies. Für die Parameter, sofern sich diese nicht von selbst erklären, hilft ein Blick in die Doku.
$extracted = Get-SPOSiteScriptFromWeb `
-WebUrl https://msdx090099.sharepoint.com/sites/ceoconnection `
-IncludeBranding `
-IncludeTheme `
-IncludeRegionalSettings `
-IncludeSiteExternalSharingCapability `
-IncludeLinksToExportedItems `
-IncludedLists ("Shared Documents")
Out-File -FilePath 'C:\Demo\SPOScripts\siteexample.json' -InputObject $extracted -Encoding bigendianunicode
Das Erstellen eines SiteDesigns bietet sich auch dann an, wenn man mit JSON und vor allem dem Schema der Scripts noch nicht so vertraut ist. Man kann damit schnell lernen und auf einer Testsite seine eigenen Entwürfe anwenden, bevor man diese auf die Vorlagen anwendet.
Pflege der Scripts und Designs
Soll ein Script im Web geändert werden, was relativ häufig vorkommt, hilft der Befehl Set-SPOSiteScript. Hier muss dann wieder der neue Inhalt und natürlich die ID des Scripts angegeben werden. Soll ein Design geändert werden, weil diesem zum Beispiel ein neues Script hinzugefügt werden soll, so geht dies mit Set-SPOSiteDesign. Über die Befehle Remove-SPOSiteScript bzw. Remove-SPOSiteDesign kann ein Script/Design entfernt werden.
Fazit
SiteDesigns sind eine einfache und schnelle Möglichkeit Vorlagen in SharePoint online bereitzustellten. Dabei kann man flexibel auf Änderungen reagieren und schnell einen Mehrwert generieren.