:

    Site-Vorlagen mit Ordnerstruktur erstellen

    In diesem Video geht es darum, wie du Site-Vorlagen mit vordefinierter Ordnerstruktur in SharePoint Online erstellen kannst. Die Vorlagen werden Admins und Benutzern bei der Erstellung neuer Sites vorgeschlagen. So kannst du zum Beispiel sicherstellen, dass Projektsites immer die richtige Ordnerstruktur besitzen.



    Benötigst du Unterstützung?

    Melde dich bei uns!



    Im Video kommen zwei Scripts sowie eine JSON-Datei zum Einsatz, die du hier findest. Innerhalb der JSON-Datei wird die Ordnerstruktur wie im Video gezeigt definiert.

    SiteScript.json

    {
      "$schema": "https://developer.microsoft.com/json-schemas/sp/site-design-script-actions.schema.json",
      "actions": [
        {
          "verb": "createSPList",
          "listName": "[[LDokumente0001_listName]]",
          "templateType": 101,
          "color": "[[LDokumente0001_color]]",
          "icon": "[[LDokumente0001_icon]]",
          "addNavLink": "[[LDokumente0001_addNavLink]]",
          "description": "[[LDokumente0001_description]]",
          "identity": "LDokumente0001",
          "subactions": [
            {
              "verb": "addFolder",
              "path": "00_Kommunikation"
            },
            {
              "verb": "addFolder",
              "path": "00_Kommunikation/Intern"
            },
            {
              "verb": "addFolder",
              "path": "00_Kommunikation/Extern"
            },
            {
              "verb": "addFolder",
              "path": "01_Planung"
            },
            {
              "verb": "addFolder",
              "path": "02_Projektverlauf"
            },
            {
              "verb": "addFolder",
              "path": "03_Lieferanten"
            },
            {
              "verb": "addFolder",
              "path": "04_Sonstiges"
            }
          ]
        }
      ],
      "bindings": {
        "LDokumente0001_listName": {
          "source": "Input",
          "defaultValue": "Dokumente"
        },
        "LDokumente0001_icon": {
          "source": "Input",
          "defaultValue": "0"
        },
        "LDokumente0001_description": {
          "source": "Input",
          "defaultValue": ""
        },
        "LDokumente0001_color": {
          "source": "Input",
          "defaultValue": "0"
        },
        "LDokumente0001_addNavLink": {
          "source": "Input",
          "defaultValue": "true"
        }
      }
    }
    

    Mit diesem Script wird die JSON-Datei zu einem Site Script hinzugefügt, woraus wiederum ein Site Design erstellt wird. Beachte, dass du einige Anpassungen im Script vornehmen musst.

    Create-SPOSiteScriptAndDesign.ps1

    #Modul installieren, wenn nicht vorhanden
    if (!(Get-Module -ListAvailable -Name Microsoft.Online.SharePoint.PowerShell)) {
        Install-Module Microsoft.Online.SharePoint.PowerShell
    } 
    
    #Authentifizierung mit Global Admin oder SharePoint Admin
    Connect-SPOService -Url "https://tenant-admin.sharepoint.com"
    
    #Pfad zur JSON ggf. anpassen
    $SiteScript = Add-SPOSiteScript -Title "Projektvorlage" -Description "Erstellt eine Site mit der Ordnerstruktur für Projekte." -Content (Get-Content "C:\Temp\SiteScript.json" -Raw)
    
    #WebTemplate: 64 = Team Site, 68 = Communication Site
    Add-SPOSiteDesign -Title $SiteScript.Title -SiteScripts $SiteScript.Id -Description $SiteScript.Description -WebTemplate "64"
    

    Mit diesem Script lässt sich ein bestehendes Site Script anpassen. Beachte auch hier wieder die nötigen Anpassungen im Script.

    Update-SPOSiteScript.ps1

    #Authentifizierung mit Global Admin oder SharePoint Admin
    Connect-SPOService -Url "https://itestlio-admin.sharepoint.com"
    
    #Site Scripts auslesen
    Get-SPOSiteScript
    
    #ID des zu bearbeitenden Site Scripts hier einfügen
    $SiteScriptId = "12345678-abcd-1234-abcd-12345678abcd"
    
    #legt das aktuelle Site Script für die Projektvorlage unter C:\Temp\SiteScript.json ab
    Get-SPOSiteScript -Identity $SiteScriptId | Out-File "C:\Temp\SiteScript-$($SiteScriptId).json"
    
    #die Datei muss jetzt lokal bearbeitet werden, um die Ordnerstruktur anzupassen
    
    
    #nach der Bearbeitung wird das Site Script in SharePoint Online aktualisiert
    #dazu muss erst der Content-Block aus der JSON extrahiert werden
    #Datei als Text einlesen
    $FileContent = Get-Content -Path "C:\Temp\SiteScript-$($SiteScriptId).json" -Raw
    
    #Finden des Index der ersten öffnenden geschweiften Klammer
    $FirstBraceIndex = $FileContent.IndexOf('{')
    
    #Finden des Index der letzten schließenden geschweiften Klammer
    $LastBraceIndex = $FileContent.LastIndexOf('}')
    
    #Extrahieren des JSON-Blocks
    if ($FirstBraceIndex -ge 0 -and $LastBraceIndex -ge 0 -and $LastBraceIndex -gt $FirstBraceIndex) {
        $JSONBlock = $FileContent.Substring($FirstBraceIndex, $LastBraceIndex - $FirstBraceIndex + 1)
    } else {
        Write-Output "Kein gültiger JSON-Block gefunden."
    }
    
    #Aktualisieren des Site Scripts in SPO
    Set-SPOSiteScript -Identity $SiteScriptId -Content $JSONBlock
    #neu erstellte Sites nutzen nun das neue Site Script