Automatisches Erstellen von Listen und Dokumenten-Bibliotheken in SharePoint mit Azure Automation
Azure Automation in der Kombination mit SharePoint bietet viele Möglichkeiten, um den unternehmerischen Alltag zu erleichtern. So können z.B. Routineaufgaben automatisiert und manuelle Aufwände für das Erstellen von SharePoint-Seiten, -Listen, -Dokumenten-Bibliotheken, -Ordnern etc. enorm reduziert werden. Dies führt nicht nur zu einer höheren Effizienz, sondern auch zu einer schnelleren Bereitstellung von Diensten und Ressourcen.
Anwendungsfälle von SharePoint und Azure Automation:
- Genehmigungen (Approvals): Azure Automation in der Kombination mit SharePoint kann verwendet werden, um bestimmte Prozesse mit Genehmigungen zu versehen. Bevor ein Prozess ausgelöst wird, muss eine ausgewählte Person diesen Prozess bestätigen.
- Automatisches Erstellen von Berechtigungsstufen: In Azure Automation wird ein Prozess ausgelöst, um einen Ordner zu einem Projekt im SharePoint anzulegen. Durch das Azure Automation-Skript werden die exakt vorgesehenen Berechtigungen auf diesen Ordner gesetzt.
- Automatisches Erstellen von SharePoint-Seiten: SharePoint-Seiten können automatisch erstellt werden, sobald ein vorher festgelegter Auslöser dafür bestimmt wurde.
Im Folgenden zeige ich dir, wie du Azure Automation einrichtest und die benötigten Module und Runbooks hinzufügst. Des weiteren sehen wir uns zwei mögliche Anwendungsfälle von SharePoint-Automatisierungen mithilfe von Azure Automation im Detail an.
Inhalt:
- Einrichtung Azure Automation, Runbooks und Webhooks
- Anwendungsbeispiel: Verwendung in Power Automate zur automatischen Anlage von Dokumenten-Bibliotheken
Azure Automation einrichten
Azure Automation ermöglicht eine automatisierte Erstellung von Ordnern. Zum Ausführen der notwendigen Befehle nutzt Azure Automation die PowerShell.
Erstellen eines Azure Automation Accounts: Create a standalone Azure Automation account | Microsoft Learn
Module
Damit die PowerShell Befehle ausgeführt werden können, müssen wir die benötigten Module in den Azure Automation Account laden. Diese sind unter "Shared Resources" > "Modules" zu finden. Unter der Auswahl "+Add Module" > "Browse from gallery" kann ein neues Modul gesucht und hinzugefügt werden.
Damit Dokumenten-Bibliotheken und Listen (sowie wenn nötig bestimmte Berechtigungen) erstellt werden können, müssen folgende Module in Azure Automation installiert werden:
- PnP.PowerShell
- ExchangeOnlineManagement
Runbooks
Innerhalb eines Azure Automation Accounts können "Runbooks" hinzugefügt werden. Dort werden die PowerShell Befehle ausgeführt (mit Managed Identity).
Managed Identity
Damit die Befehle mit den installierten Modulen durch eine Managed Identity ausgeführt werden können, müssen diese im Azure Automation Account zugeordnet werden. Dazu wird die Object ID des Azure Automation Accounts benötigt. Diese ist unter "Account Setting" > "Identity" zu finden. Der Status muss auf "On" stehen. Die Object (principal) ID ist ebenfalls dort zu finden.
Um die Module für den Azure Automation Account zu registrieren, müssen das PowerShell Terminal geöffnet und folgende Befehle ausgeführt werden:
PnP.PowerShell:
PnP.PowerShell ist für SharePoint zuständig.
- Modul in PowerShell installieren
- Object ID aus Azure Automation unter Identity hinzufügen
- Berechtigungen auf die Managed Identity in PowerShell mit der Object ID freischalten
- PnP Modul in Azure Automation hinzufügen
PowerShell Terminal:
Install-Module PnP.PowerShell
$ObjectID="<Object ID>"
Add-PnPAzureADServicePrincipalAppRole -Principal $ObjectID -AppRole "Group.Read.All" -BuiltInType MicrosoftGraph
Add-PnPAzureADServicePrincipalAppRole -Principal $ObjectID -AppRole "Sites.FullControl.All" -BuiltInType SharePointOnline
Azure Automation Runbook:
Mit folgendem Befehl verbindest du PnP im Azure Automation Runbook mit SharePoint:
Connect-PnPOnline -ManagedIdentity
Danach werden die Befehle ausgeführt, die zur Erstellung von Dokumenten-Bibliotheken, Ordnern, Listen usw. verwendet werden. Dazu im weiteren Verlauf mehr.
Weitere Informationen zu PnP:
PnP Cmdlets
PnP with Azure Automation Runbooks
ExchangeOnlineManagement:
ExchangeOnlineManagement ist unter anderem für die Erstellung von Berechtigungen, Berechtigungsstrukturen und Sicherheitsgruppen zuständig. Exchange Online ist generell für die cloudbasierte Messaging-Plattform von Microsoft verantwortlich (E-Mail und die damit einher gehenden Berechtigungsstrukturen).
- Modul in PowerShell installieren
- Object ID aus Azure Automation unter Identity hinzufügen
- Mit MSGraph verbinden (mit Global Admin Rechten)
- Parameter einfügen
- Neue Berechtigungen für Exchange erstellen
- Managed ID entsprechende Azure AD Rolle zuweisen (Exchange Admin)
- Danach in Entra ID prüfen, ob die Rolle hinzugefügt wurde und dann in Azure Automation das Modul für Exchange hinzufügen
PowerShell Terminal:
Install-Module Microsoft.Graph
#Object ID aus Azure Automation unter Identity
$ObjectID="<Object ID>"
#Connect to MSGraph mit Global Admin Rechten
Connect-MgGraph -Scopes AppRoleAssignment.ReadWrite.All,Application.Read.All
#Parameter
$AppRoleID="dc50a0fb-09a3-484d-be87-e023b12c6440" #GUID überall gleich
$ResourceID=(Get-MgServicePrincipal -Filter "AppId eq '00000002-0000-0ff1-ce00-000000000000'").Id
#Neue Berechtigungen für Exchange
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $ObjectID -PrincipalId $ObjectID -AppRoleId $AppRoleID -ResourceId $ResourceID
#Managed ID entsprechende Azure AD Rolle zuweisen (Exchange Admin)
Connect-MgGraph -Scopes RoleManagement.ReadWrite.Directory
$ERoleID="29232cdf-9323-42fd-ade2-1d097af3e4de" #GUID für Exchange Admin
New-MgRoleManagementDirectoryRoleAssignment -PrincipalId $ObjectID -RoleDefinitionId $ERoleID -DirectoryScopeId "/"
#Danach im Entra ID im Azure Portal prüfen, ob Role hinzugefügt wurde und dann in Azure Automation das Modul für Exchange hinzufügen
Azure Automation Runbook:
Um ExchangeOnline im Azure Automation Runbook mit dem Tenant zu verbinden, verwendest du folgenden Befehl:
Connect-ExchangeOnline -ManagedIdentity -Organization tenant.onmicrosoft.com
Webhooks:
Damit das Azure Automation Runbook automatisch getriggert wird, muss ein Webhook erstellt werden.
Ein Webhook erstellst du im Azure Portal. Wähle dort das entsprechende Runbook und dann "Add Webhook".
Der WebHook wird wie folgt im Azure Automation Runbook hinterlegt, damit das Runbook dadurch getriggert wird:
param
(
[Parameter(Mandatory=$false)]
[object] $WebhookData
)
Die URL wird verwendet, um von externen Applikationen aus getriggert zu werden.
Anwendungsbeispiele Power Automate Flow
Automatisches Anlegen eines Ordners bei Hinzufügen einer Person:
Hierfür erstellen wir einen Flow, der ausgeführt wird, sobald eine neue Person einem bestimmten Team in Microsoft Teams hinzugefügt wird. Dieser Flow triggert den Webhook, der das Azure Automation Runbook ausführt. In dem Runbook befindet sich der Code, der zum Beispiel auf einer SharePoint-Seite (PnP.PowerShell) einen Ordner anlegt, auf den nur diese neu hinzugefügte Person Zugriff hat (ExchangeOnline).
Weitere Informationen zu Webhooks und wie diese in Azure Automation gestartet werden: Starten eines Azure Automation-Runbooks über einen Webhook | Microsoft Learn
Automatisches Anlegen einer Dokumenten-Bibliothek in SharePoint:
In diesem Fall wird eine E-Mail versendet, in der automatisch eine Dokumenten-Bibliothek auf einer Kommunikationsseite im SharePoint einer Organisation angelegt werden soll. Dort sollen nur bestimmte Nutzer Zugriff erhalten. Durch die E-Mail wird ein Flow ausgeführt, der die Webhook (URL) triggert und somit das Azure Automation Runbook ausführt.
Azure Automation Runbook:
(Mit " #" gekennzeichnete Zeilen sind auskommentiert und dienen nur dazu das Skript besser zu verstehen.)
#Webhook Verbindung
param
(
[Parameter(Mandatory=$false)]
[object] $WebhookData
)
#Output des Webhooks noch einmal wiedergeben
write-output $WebhookData.WebhookName
write-output $WebhookData.RequestBody
write-output $WebhookData.RequestHeader
$BibliothekName=$WebhookData.RequestBody
#Umlaute und Leerzeichen ersetzen, da SharePoint diese in der URL nicht erkennt.
$SecName=$BibliothekName.replace(" ", "_").replace("Ä", "Ae").replace("ä", "ae").replace("Ü", "Ue").replace("ü", "ue").replace("Ö", "Oe").replace("ö", "oe")
####Exchange
#Mit Exchange Online verbinden
Connect-ExchangeOnline -ManagedIdentity -Organization tenant.onmicrosoft.com
#Erstellen einer Sicherheitsgruppe. Die auf diesen Ordner zugreifen dürfen.
New-DistributionGroup -Name "Sicherheitsgruppe1" -Type "Security" -Confirm:$false
#Sicherheitsgruppe Mitglieder hinzufügen
Add-DistributionGroupMember -Identity "Sicherheitsgruppe1" -Member "TestUser@tenant.com" -BypassSecurityGroupManagerCheck -Confirm:$false
#Verbindung zu Exchange trennen
Disconnect-ExchangeOnline -Confirm:$false
####PnP.Online
#Mit der SharePoint Site verbinden, auf dem die Dokumenten-Bibliothek angelegt werden soll
Connect-PnPOnline tenant.sharepoint.com -ManagedIdentity
#Neue Dokumenten Bibliothek erstellen mit Namen, der in der E-Mail stand
New-PnPList -Title $BibliothekName -Url $SecName -Template DocumentLibrary
#Wartezeit, damit alle wichtigen Änderungen erkannt werden (Kann auch weniger Zeit sein)
Start-Sleep -Seconds 180
#Inheritance der Ordner Brechen und Permissions setzen
Get-PnPFolder -Url "$SecName" | Set-PnPFolderPermission -List $BibliothekName -InheritPermissions
Set-PnPFolderPermission -List $BibliothekNa,e -Identity "$SecName" -User "Sicherheitsgruppe1 -AddRole "Mitwirken" -ClearExisting
Weitere Einsatzmöglichkeiten in der SharePoint-Administration (Approvals, Site Creation mit Genehmigung):
- Input/Informationen, die durch eine Canvas-App eingegeben werden
- Self-Service für Mitarbeitende und Kontrolle mittels Freigaben/Genehmigungen
- Erstellen von SharePoint-Seiten, -Ordnern, -Dokumenten-Bibliotheken und -Listen
- Erstellen von Sicherheitsgruppen
- Verwalten von Berechtigungen
Fazit
Mit Azure Automation lassen sich insbesondere administrative wiederkehrende Aufgaben mit überschaubarem Programmieraufwand automatisieren und beschleunigen. Dies bedeutet eine Minimierung manueller Aufwände und möglicher Fehlerquellen, effizientere Ressourcennutzung und schnellere Reaktionszeiten. In Verbindung mit SharePoint bietet Azure Automation eine effiziente und vielseitige Lösung zur kompletten oder teilweisen Automatisierung von IT-Prozessen in der Dokumentenverwaltung.