Im Office 365 Admin Center lassen sich Lizenzen bequem per Mausklick ändern. Allerdings immer nur für einen User auf einmal. Die Änderung von Lizenzen für eine ganze Masse an Usern kann sehr aufwändig und umständlich sein.
Eine Änderung der Lizenzen per Powershell Skript kann für eine größere Zahl an Usern der einfachere und schnellere Weg sein.
Voraussetzungen
Zunächst benötigt man das „Microsoft Azure Active Directory Module for Windows PowerShell“
Installation
Ggf. wird der „Microsoft Online Services Sign-In Assistant“ benötigt, falls für die entsprechenden Accounts MFA aktiviert ist. (Achtung!! Bei der Verwendung von Proxy Servern kann es zu Problemen mit der Authentifizierung kommen!)
Lizenzen zuweisen
Connection
Übersicht über die vorhandenen Lizenztypen
Am Besten verschafft man sich zunächst einen Überblick über die vorhandenen Lizenztypen. Mit dem cmdlet get-MsolAccountSku bekommt man eine Übersicht über die vorhandenen Lizenztypen.
Hierbei stellt man sofort fest, dass der erste Teil der Lizenzbezeichnung dem Tenantnamen entspricht.
Beispiel:
XYglobal:SPE_E3 in Powershell entspricht im Office 365 Admin Center des XYglobal Tenants der Microsoft 365 E3 Lizenz
Nun gilt es die richtige Lizenz zu finden. Hier kann die Anzahl der ActiveUnits und ConsumedUnits ein guter Anhaltspunkt sein. So lassen sich die Lizenzen gut mit den „ausgeschriebenen“ Namen aus dem Admin Center vergleichen
Region
Um einem User eine Lizenz zuweisen zu können, muss zunächst die Region des Users bzw. der Lizenz festgelegt werden. Hierzu verwendet man das Set-MsolUser cmdlet.
Beispiel:
Set-MsolUser -UserPrincipalName T.Mustermann@YourDomain.com -UsageLocation "DE"
Hier wird dem User Mustermann die UsageLocation Deutschland hinzugefügt.
Tipp: Wurde der User per Azure AD Connect Sync angelegt, ist dieser Wert möglicherweise schon in dem MsolUser Attribut „Country“ vorhanden und kann für die UsageLocation verwendet werden:
$msolUser = Get-MsolUser -UserPrincipalName $user.UserPrincipalName If ($msolUser.UsageLocation -eq "") { Set-MsolUser -UserPrincipalName $msolUser.UserPrincipalName -UsageLocation $msolUser.Country }
Lizenzen zuweisen/entfernen
Um einem User nun eine Lizenz zuzuweisen, verwendet man nun folgendes cmdlet:
Set-MsolUserLicense -UserPrincipalName T.Mustermann@YourDomain.com -AddLicenses "YourTenant:SPE_E3"
Um eine Lizenz zu entfernen verwendet man entsprechend:
Set-MsolUserLicense -UserPrincipalName T.Mustermann@YourDomain.com -RemoveLicenses "YourTenant:ENTERPRISEPACK"
Um mehrere Lizenzen hinzuzufügen bzw. zu entfernen werden die entsprechenden Lizenzbezeichnungen einfach mit einem , getrennt nacheinander aufgelistet:
Set-MsolUserLicense -UserPrincipalName T.Mustermann@YourDomain.com -AddLicenses "YourTenant:SPE_E3", "YourTenant:VISIOCLIENT"
Lizenzoptionen
In manchen Fällen ergibt es Sinn nicht alle Services, die in einem Lizenztyp enthalten sind, auch für einen User zu aktivieren. Hierzu stellt das Set-MsolUserLicense cmdlet den Parameter -LicenseOptions bereit. Um diesen verwenden zu können, müssen wir allerdings zunächst die ServicePlan Bezeichnungen einer Lizenz kennen.
Diese bekommen wir mit folgendem cmdlet:
(Get-MsolAccountSku | where {$_.AccountSkuId -eq 'LizenzName'}).ServiceStatus
Beispiel für die Lizenz XYglobal:SPE_E3 (Microsoft 365 E3):
(Get-MsolAccountSku | where {$_.AccountSkuId -eq 'XYglobal:SPE_E3'}).ServiceStatus
Nun müssen wir alle Services, die wir nicht bereitstellen wollen, in einer Variable vom Typ MsolLicenseOptions auflisten. Wollen wir z.B. auf die Services Yammer und Exchange Online verzichten, würde die Lizenzoption wie folgt aussehen:
$myLicOpt = New-MsolLicenseOptions -AccountSkuId "YourTenant:SPE_E3" -DisabledPlans "YAMMER_ENTERPRISE","EXCHANGE_S_ENTERPRISE"
Um einem User nun eine Lizenz vom Typ Microsoft 365 E3 zuzuweisen, und dabei auf die Dienste Yammer und Exchange Online zu verzichten, verwenden wir folgende cmdlets:
$myLicOpt = New-MsolLicenseOptions -AccountSkuId "YourTenant:SPE_E3" -DisabledPlans "YAMMER_ENTERPRISE","EXCHANGE_S_ENTERPRISE" Set-MsolUserLicense -UserPrincipalName T.Mustermann@YourDomain.com -AddLicenses "YourTenant:SPE_E3" -LicenseOptions $myLicOpt
Bearbeitung mehrerer User
Möchte man nun einen bestimmten Task für mehrere User ausführen, bietet uns Powershell viele Möglichkeiten. Eine davon besteht darin, mit einer Liste von Usern zu arbeiten.
Hierzu legen wir eine CSV Datei an. Die Überschrift für diese CSV könnte z.B. „UserPrincipalName“ sein. Dann listen wir untereinander die UPN's der einzelnen User auf, für die wir eine Aktion ausführen wollen.
UserPrincipalName T.Mustermann@YourDomain.com
Um diese CSV nun nutzen zu können, importieren wir sie mit dem cmdlet: Import-Csv
Beispiel:
# User Import $users = Import-Csv -Path C:\Temp\O365User.csv
Nun nutzen wir eine einfache „foreach“ Schleife um jeden User zu bearbeiten:
# User Import $users = Import-Csv -Path C:\Temp\O365User.csv foreach ($user in $users) { ... }
Beispiel XY AG- Jeder User in der O365User.csv bekommt eine Microsoft 365 E3 Lizenz (ohne Yammer und Exchange Online) zugewiesen und die alten Lizenzen Office 365 E3 und Enterprise Mobility and Security werden entfernt:
# Lizenzoptionen festlegen $myLicOpt = New-MsolLicenseOptions -AccountSkuId "XYglobal:SPE_E3" -DisabledPlans "YAMMER_ENTERPRISE","EXCHANGE_S_ENTERPRISE" # User Import $users = Import-Csv -Path C:\Temp\O365User.csv foreach ($user in $users) { # MsolUser laden $msolUser = Get-MsolUser -UserPrincipalName $user.UserPrincipalName If ($msolUser.UsageLocation -eq "") { # Wenn Region noch nicht gesetzt dann mit dem Attribut Country füllen Set-MsolUser -UserPrincipalName $msolUser.UserPrincipalName -UsageLocation $msolUser.Country } # Neue Lizenz (mit Optionen) setzen und alte Lizenzen entfernen Set-MsolUserLicense -UserPrincipalName $user.UserPrincipalName -AddLicenses "XYglobal:SPE_E3" -LicenseOptions $myLicOpt -RemoveLicenses "XYglobal:ENTERPRISEPACK", "XYglobal:EMS" }
Tipp: Ungültige Lizenzkombinationen, z.B. eine Microsoft 365 E3 (mit Sharepoint Plan 2) zusammmen mit einer einzelnen Sharepoint Plan 1 Lizenz, werden von Azure nicht akzeptiert. In einem solchen Fall wird die ungültige Lizenzkombi nicht zugewiesen.
Quellen:
Autor: Patrick Gilcher