HanseVision Blog - Living Transformation. Updates zu Digitale Transformation, Digitale Kollaboration, New Work und modernen Arbeitswelten

PowerShell: Erstellung dynamischer M365-Gruppen und Aktivierung von Teams

Geschrieben von Alexander Zur | 05.02.2024

Microsoft PowerShell ist für Administratoren ein nützliches Werkzeug mit dem unterschiedliche Anwendungsszenarien automatisiert und zeitsparend erledigt werden können. In der Welt der IT hat dieses Tool einen festen Platz in jeder administrativen Verwaltung erobert, da mit PowerShell komplexe Aufgaben effizient und schnell erledigt werden können.

Auch Microsoft 365 kann dank PowerShell verwaltet und administriert werden. Teilweise sind manche Anpassungen sogar nur über die PowerShell-Befehlszeile und nicht über die administrative Oberfläche des Admin Centers in Microsoft 365 möglich. 

Heute möchte ich Ihnen die Möglichkeit der einfachen Erstellung von dynamischen Microsoft365-Gruppen vorstellen, mit der Sie relativ einfach und schnell Gruppen erstellen können, die auf Basis von Benutzerobjekt-Details automatisch befüllt werden. So können Sie beispielsweise eine dynamische Gruppe für das Marketing-Team erstellen, in der automatisch alle Personen Mitglied sind, die in der Organisationseinheit oder Abteilung "Marketing" sind. 

Dynamische Gruppen haben den Vorteil, dass diese nicht mehr manuell bearbeitet werden müssen, um die notwendigen Personen in einer Gruppe zu hinterlegen. Mit einer dynamischen M365-Gruppe können Sie darüber hinaus noch die Vorteile eines Gruppenpostfaches, eines Teams-Raums oder anderer M365-Anwendungen nutzen. 

Neue Gruppen in Microsoft 365 können mit dem Befehl New-MgGroup, welches sich im Modul Microsoft.Graph.Groups befindet, erstellt werden. Bevor nun Gruppen erstellt werden können, müssen Sie also zunächst das Modul installieren. Ebenfalls müssen Sie der Graph-API die Berechtigung im Entra ID erteilen, sodass diese Unternehmensanwendung auf die Daten Ihres Tenants zugreifen kann.

Schauen wir uns nun einmal den Befehl genauer an, mit dem eine neue dynamische M365-Gruppe erstellt werden kann:

#Parameter
$Gruppenname = "Name der M365-Gruppe, die erstellt werden soll"
$Mailadresse = "Mailadresse, die vor dem @-Zeichen stehen soll"
$Regel = '(User.Department -eq "***********")' -> *********** steht für den Namen der Abteilung (hier können auch andere AAD-Attribute, die ein Benutzer besitzt, genutzt werden) 
$Sichtbarkeit = "
Private, Public, oder HiddenMembership" -> hiermit kann die Sichtbarkeit einer Gruppe eingestellt werden. Wird dieser Parameter nicht gesetzt, ist eine M365-Gruppe immer privat, eine Sicherheitsgruppe immer öffentlich

New-MgGroup -DisplayName $Gruppenname -MailEnabled:$True -SecurityEnabled:$False -MailNickname $Mailadresse -GroupTypes "DynamicMembership", "Unified" -MembershipRule $Regel -MembershipRuleProcessingState "On" -Visibility $Sichtbarkeit

Mit diesem Befehl kann nun eine neue M365-Gruppe erstellt werden. Soll im Anschluss der Erstellung der Gruppe auch Teams aktiviert werden, so benötigen wir die Gruppen-ID. Daher empfehle ich, die Gruppe mittels einer Hilfsvariable zu erstellen, um mit dieser Hilfsvariable weitere Informationen zu erhalten. 

Der Befehl sieht dann wie folgt aus:

$NeueGruppe = New-MgGroup -DisplayName $Gruppenname -MailEnabled:$True -SecurityEnabled:$False -MailNickname $Mailadresse -GroupTypes "DynamicMembership", "Unified" -MembershipRule $Regel -MembershipRuleProcessingState "On" -Visibility $Sichtbarkeit

Im Anschluss kann nun diese Variable genutzt werden, um mittels der Graph-API die ID zu erhalten. Innerhalb der Variable "NewTeamParameter" kann das Teams-Template ausgewählt werden, welches genutzt werden soll. In unserem Falle nutzen wir das Standard-Template, welches nur den allgemeinen Kanal bereitstellt. Bitte beachten Sie, dass Sie ungefähr 60 Sekunden nach Erstellung der M365-Gruppe warten müssen, um den Teams-Raum zu aktivieren.

    $GroupUri = "https://graph.microsoft.com/v1.0/groups('" + $NeueGruppe.Id + "')"
    $NewTeamParameter = @{
            "template@odata.bind"="https://graph.microsoft.com/v1.0/teamsTemplates('standard')"
            "group@odata.bind"="$($GroupUri)"
                        }

        $NeuesTeam = New-MgTeam -BodyParameter $NewTeamParameter