Lizenzen für Microsoft 365 mittels PowerShell zuweisen


    Tags: , , ,

    Gruppen für Office 365Über die grafische Oberfläche des Microsoft 365 Admin Portal können Firmen ihre Lizen­zen an ausgewählte User zu­weisen. Effizienter ist die gruppen­basierte Lizen­zierung, die aber ein Azure AD Premium P1 voraus­setzt. Wenn man die Kosten dafür sparen möchte, kann man das Manage­ment über Power­Shell automa­tisieren.

    Die Automa­tisierung der Lizenz­verwaltung beschränkt sich natürlich nicht nur auf die Zuweisung von Lizenzen, sondern betrifft auch deren Entzug. Ein weiteres gängiges Anliegen besteht darin, die Lizenzen im Tenant bei Bedarf auf andere Benutzer umzu­schichten.

    Vorbereitungen

    In den meisten Fällen sollen die User durch die Mitgliedschaft in einer lokalen Active Directory-Gruppe automatisch eine Lizenz in Microsoft 365 erhalten. Dies ist möglich, wenn die entsprechende Gruppe über Azure Active Directory Connect (AAD Connect) nach Microsoft 365 synchronisiert wurde.

    Im ersten Schritt muss man erwartungsgemäß mit PowerShell eine Verbindung zu Microsoft 365 herstellen. Wie man dabei vorgeht, beschreibt diese Anleitung.

    Vorhandene Lizenzen abfragen

    Nun wird man sich einen Überblick verschaffen wollen, welche Lizenzen denn überhaupt zur Verfügung stehen. Dies geht mit dem Cmdlet

    Get-AzureADSubscribedSku

    Mit Get-AzureADSubscribedSku kann man sich die vorhandenen M365-Lizenzen ausgeben lassen.

    Wenn man prüfen möchte, wie viele Lizenzen aus dem Kontingent bereits vergeben sind, dann kann man dies mit folgendem Befehl erfragen:

    Get-AzureADSubscribedSku |
    Select -Property Sku*,ConsumedUnits -ExpandProperty PrepaidUnits

    Verbrauchte Microsoft-365-Lizenzen mit PowerShell auflisten

    Des Weiteren kann man auch für einzelne Benutzer die jeweils zuge­wiesene Lizenz ermitteln. Wichtig hierbei ist immer die so genannte SkuID. Die SKUPartNumber, unter welcher der normale Paket- bzw. Lizenzname steht, hilft leider hier nicht weiter.

    Get-AzureADUser -objectid cb5e0cb0-b07a-482f-bb4d-3ade2426b7e9 |
    Select -ExpandProperty AssignedLicenses

    An einen bestimmten User zugeteilte Lizenzen anzeigen

    Jetzt kann man anhand der SkuID heraus­finden, um welches Lizenzpaket es sich dabei handelt:

    Get-AzureADSubscribedSku |
    Where {$_.SkuId -eq "29a2f828-8f39-4837-b8ff-c957e86abe3c"}

    Auflösung einer bestimmten SkuID

    Es gibt hierzu allerdings noch einen anderen Weg, welcher zeigt, welche Features einer Lizenz für einen User aktiviert wurden. In vielen Umgebungen sind nämlich aus verschiedenen Gründen die Lizenzen nicht immer in vollem Umfang zugeteilt.

    Get-AzureADUser -objectid cb5e0cb0-b07a-482f-bb4d-3ade2426b7e9 |
    Select -ExpandProperty AssignedPlans

    Alle einem Benutzerkonto zugeteilten Lizenzen ansehen

    In diesem Fall sind alle Features der Lizenz beim User aktiviert, wie die Spalte CapabilityStatus anhand des Werts Enabled zeigt.

    Mit diesen Informationen könnte man bereits einem User eine Lizenz zuweisen:

    Oftmals soll aber, wie erwähnt, eine Lizenz nicht in vollem Umfang zur Verfügung gestellt werden, da gewisse Funktionen im Unter­nehmen noch nicht implementiert sind oder der User sie schlicht nicht nutzen darf.

    Hier wäre es gut zu wissen, wie die einzelnen Programm­abschnitte, welche in der Lizenz enthalten sind, heißen (zum Beispiel: Sharepoint, Teams, Exchange etc.). Dies kann folgender Befehl herausfinden:

    (Get-AzureADSubscribedSku |
    where {$_.SkuPartNumber –eq 'TEAMS_COMMERCIAL_TRIAL'}).ServicePlans

    Programmbestandteile für eine Lizenz anzeigen

    Wichtig ist hier eigentlich nur die Spalte ServicePlaneName.

    Für die granulare Zuweisung finde ich persönlich das alte MSOnline-Modul einfacher:

    Lizenz entziehen

    Irgendwann muss einem User natürlich auch wieder die Lizenz entzogen werden. Sollte es sich um ein Offboarding handeln, so kann man das Konto einfach in AAD Connect aus der Synchronisation zum Azure AD entfernen und seine Lizenz wird dann automatisch wieder freigegeben.

    Wenn jedoch ein User mehrere Lizenzen besitzt und ihm eine davon weggenommen werden soll, dann kann man folgendermaßen vorgehen:

    M365-Lizenz einem Benutzer mit Hilfe von PowerShell entziehen

    Den Erfolg des Befehls kann man wie folgt kontrollieren:

    Get-AzureADUser -ObjectId $UserUPN |
    Select -ExpandProperty AssignedPlans

    Prüfen, ob für den Benutzer die Lizenz erfolgreich entfernt wurde.

    Er bestätigt, dass die Lizenz dem Benutzer nun entzogen worden ist.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Roland Eich

    Roland Eich ist gelernter Fach­infor­matiker für System­inte­gration und in der IT seit über 14 Jahren zu Hause. Roland deckt auf­grund seiner Erfah­rungen ein breites Spek­trum der Microsoft-Produkt­palette ab.
    Zudem besitzt er ver­schiedene Zertifi­zierungen (MCITP, MCSA und MCSE, ITIL, PRINCE2).

    // Kontakt: E-Mail //

    Verwandte Beiträge

    Weitere Links

    1 Kommentar

    Das ist nicht ganz korrekt. Ich habe mehrere Tests gemacht und die Gruppen-Lizensierung benötigt nicht unbedingt eine P1 Lizenz. Die Gruppenberechtigungen sind möglich sobald sich Office 365 E3 Lizenzen im Tenant befinden, das ist auch auf der Website von Microsoft nochmal hinterlegt: https://docs.microsoft.com/de-de/azure/active-directory/fundamentals/act.... Befinden sich also E3 Lizenzen im Tenant ist alles gut. Aus eigener Erfahrung kann ich sagen, die Gruppen Lizenzierung ist das einzig richtige. Sollten manuell Lizenzen vergeben worden sein, ist das kein Problem - Gruppen erstellen - User zuweisen und anschließend per Script die manuell zugewiesenen wieder entfernen. Lizenzen werden zwar nie doppelt gezählt, aber wenn beispielsweise ein User von E3 auf E1 Heruntergestuft wird und der User noch eine frühere E3 über das Admin Center zugewiesen bekommen hat, besitzt er diese Lizenz weiterhin. Das ist etwas "grütze" aber works as designed :)