Zuweisen von Microsoft 365-Lizenzen zu Benutzerkonten mit PowerShell
Dieser Artikel gilt sowohl für Microsoft 365 Enterprise als auch für Office 365 Enterprise.
Benutzer können keine Microsoft 365-Dienste nutzen, bis ihrem Konto eine Lizenz aus einem Lizenzierungsplan zugewiesen wurde. Sie können PowerShell verwenden, um Lizenzen schnell nicht lizenzierten Konten zuzuweisen.
Benutzerkonten muss zunächst ein Standort zugewiesen werden. Die Angabe eines Speicherorts ist ein erforderlicher Bestandteil des Erstellens eines neuen Benutzerkontos im Microsoft 365 Admin Center.
Für Konten, die von Ihrem lokales Active Directory Domain Services synchronisiert werden, ist standardmäßig kein Speicherort angegeben. Sie können einen Speicherort für diese Konten über folgendes konfigurieren:
- Das Microsoft 365 Admin Center
- PowerShell
- Die Azure-Portal (Active Directory-Benutzerkonto>>>Profil>Kontaktinformationen>Land oder Region).
Hinweis
Erfahren Sie, wie Sie Benutzerkonten mit dem Microsoft 365 Admin Center Lizenzen zuweisen. Eine Liste mit zusätzlichen Ressourcen finden Sie unter Verwalten von Benutzern und Gruppen.
Verwenden des Microsoft Graph PowerShell SDK
Stellen Sie zunächst eine Verbindung mit Ihrem Microsoft 365-Mandanten her.
Das Zuweisen und Entfernen von Lizenzen für einen Benutzer erfordert den Berechtigungsbereich User.ReadWrite.All oder eine der anderen Berechtigungen, die auf der Microsoft Graph-API-Referenzseite "Lizenz zuweisen" aufgeführt sind.
Der Berechtigungsbereich Organization.Read.All ist erforderlich, um die im Mandanten verfügbaren Lizenzen zu lesen.
Connect-MgGraph -Scopes User.ReadWrite.All, Organization.Read.All
Führen Sie den Get-MgSubscribedSku
Befehl aus, um die verfügbaren Lizenzierungspläne und die Anzahl der verfügbaren Lizenzen in jedem Plan in Ihrer Organisation anzuzeigen. Die Anzahl der verfügbaren Lizenzen in jedem Plan ist ActiveUnits - WarningUnits - ConsumedUnits. Weitere Informationen zu Lizenzierungsplänen, Lizenzen und Diensten finden Sie unter Anzeigen von Lizenzen und Diensten mit PowerShell.
Führen Sie diesen Befehl aus, um die nicht lizenzierten Konten in Ihrer Organisation zu finden.
Get-MgUser -Filter 'assignedLicenses/$count eq 0' -ConsistencyLevel eventual -CountVariable unlicensedUserCount -All
Führen Sie diesen Befehl aus, um die nicht lizenzierten synchronisierten Benutzer in Ihrer Organisation zu finden.
Get-MgUser -Filter 'assignedLicenses/$count eq 0 and OnPremisesSyncEnabled eq true' -ConsistencyLevel eventual -CountVariable unlicensedUserCount -All -Select UserPrincipalName
Sie können Lizenzen nur Benutzerkonten zuweisen, für die die UsageLocation-Eigenschaft auf einen gültigen ISO 3166-1 Alpha-2-Ländercode festgelegt ist. „US" steht zum Beispiel für die Vereinigten Staaten und „FR" für Frankreich. Einige Microsoft 365-Dienste sind in bestimmten Ländern nicht verfügbar. Weitere Informationen finden Sie unter Informationen zu Lizenzbeschränkungen.
Führen Sie diesen Befehl aus, um Konten zu finden, die keinen UsageLocation-Wert aufweisen.
Get-MgUser -Select Id,DisplayName,Mail,UserPrincipalName,UsageLocation,UserType | where { $_.UsageLocation -eq $null -and $_.UserType -eq 'Member' }
Führen Sie diesen Befehl aus, um den UsageLocation-Wert für ein Konto festzulegen.
$userUPN="<user sign-in name (UPN)>"
$userLoc="<ISO 3166-1 alpha-2 country code>"
Update-MgUser -UserId $userUPN -UsageLocation $userLoc
Beispiel:
Update-MgUser -UserId "belindan@litwareinc.com" -UsageLocation US
Wenn Sie das Cmdlet Get-MgUser verwenden, ohne den Parameter -All zu verwenden, werden nur die ersten 100 Konten zurückgegeben.
Zuweisen von Lizenzen zu Benutzerkonten
Um einem Benutzer eine Lizenz zuzuweisen, verwenden Sie den folgenden Befehl in PowerShell.
Set-MgUserLicense -UserId $userUPN -AddLicenses @{SkuId = "<SkuId>"} -RemoveLicenses @()
In diesem Beispiel wird dem nicht lizenzierten Benutzer belindan@litwareinc.comeine Lizenz aus dem SPE_E5-Lizenzierungsplan (Microsoft 365 E5) zugewiesen:
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
Set-MgUserLicense -UserId "belindan@litwareinc.com" -AddLicenses @{SkuId = $e5Sku.SkuId} -RemoveLicenses @()
In diesem Beispiel werden dem Benutzer belindan@litwareinc.comSPE_E5 (Microsoft 365 E5) und EMSPREMIUM (ENTERPRISE MOBILITY + SECURITY E5) zugewiesen:
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$e5EmsSku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'EMSPREMIUM'
$addLicenses = @(
@{SkuId = $e5Sku.SkuId},
@{SkuId = $e5EmsSku.SkuId}
)
Set-MgUserLicense -UserId "belinda@litwareinc.com" -AddLicenses $addLicenses -RemoveLicenses @()
In diesem Beispiel wird SPE_E5 (Microsoft 365 E5) zugewiesen, wobei die Dienste MICROSOFTBOOKINGS (Microsoft Bookings) und LOCKBOX_ENTERPRISE (Kunden-Lockbox) deaktiviert sind:
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$disabledPlans = $e5Sku.ServicePlans | `
Where ServicePlanName -in ("LOCKBOX_ENTERPRISE", "MICROSOFTBOOKINGS") | `
Select -ExpandProperty ServicePlanId
$addLicenses = @(
@{
SkuId = $e5Sku.SkuId
DisabledPlans = $disabledPlans
}
)
Set-MgUserLicense -UserId "belinda@litwareinc.com" -AddLicenses $addLicenses -RemoveLicenses @()
In diesem Beispiel wird ein Benutzer mit SPE_E5 (Microsoft 365 E5) aktualisiert und die Sway- und Forms-Dienstpläne deaktiviert, während die vorhandenen deaktivierten Pläne des Benutzers im aktuellen Zustand bleiben:
$userLicense = Get-MgUserLicenseDetail -UserId "belinda@litwareinc.com"
$userDisabledPlans = $userLicense.ServicePlans | `
Where ProvisioningStatus -eq "Disabled" | `
Select -ExpandProperty ServicePlanId
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$newDisabledPlans = $e5Sku.ServicePlans | `
Where ServicePlanName -in ("SWAY", "FORMS_PLAN_E5") | `
Select -ExpandProperty ServicePlanId
$disabledPlans = ($userDisabledPlans + $newDisabledPlans) | Select -Unique
$addLicenses = @(
@{
SkuId = $e5Sku.SkuId
DisabledPlans = $disabledPlans
}
)
Set-MgUserLicense -UserId "belinda@litwareinc.com" -AddLicenses $addLicenses -RemoveLicenses @()
In diesem Beispiel wird ein Benutzer mit SPE_E5 (Microsoft 365 E5) aktualisiert und die Sway- und Forms-Dienstpläne deaktiviert, während die vorhandenen deaktivierten Pläne des Benutzers in allen anderen Abonnements im aktuellen Zustand verbleiben:
$userLicense = Get-MgUserLicenseDetail -UserId belinda@litwareinc.com
$userDisabledPlans = $userLicense.ServicePlans | Where-Object ProvisioningStatus -eq "Disabled" | Select -ExpandProperty ServicePlanId
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$newDisabledPlans = $e5Sku.ServicePlans | Where ServicePlanName -in ("SWAY", "FORMS_PLAN_E5") | Select -ExpandProperty ServicePlanId
$disabledPlans = ($userDisabledPlans + $newDisabledPlans) | Select -Unique
$result=@()
$allPlans = $e5Sku.ServicePlans | Select -ExpandProperty ServicePlanId
foreach($disabledPlan in $disabledPlans)
{
foreach($allPlan in $allPlans)
{
if($disabledPlan -eq $allPlan)
{
$property = @{
Disabled = $disabledPlan
}
}
}
$result += New-Object psobject -Property $property
}
$finalDisabled = $result | Select-Object -ExpandProperty Disabled
$addLicenses = @(
@{
SkuId = $e5Sku.SkuId
DisabledPlans = $finalDisabled
}
)
Set-MgUserLicense -UserId belinda@litwareinc.com -AddLicenses $addLicenses -RemoveLicenses @()
Zuweisen von Lizenzen zu einem Benutzer durch Kopieren der Lizenzzuweisung von einem anderen Benutzer
In diesem Beispiel wird mit demselben Lizenzierungsplan zugewiesen jamesp@litwareinc.com , der auf belindan@litwareinc.comangewendet wurde:
$mgUser = Get-MgUser -UserId "belindan@litwareinc.com" -Property AssignedLicenses
Set-MgUserLicense -UserId "jamesp@litwareinc.com" -AddLicenses $mgUser.AssignedLicenses -RemoveLicenses @()
Verschieben eines Benutzers in ein anderes Abonnement (Lizenzplan)
In diesem Beispiel wird ein Benutzer vom SPE_E3-Lizenzierungsplan (Microsoft 365 E3) auf den SPE_E5-Lizenzierungsplan (Microsoft 365 E5) aktualisiert:
$e3Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E3'
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
# Unassign E3
Set-MgUserLicense -UserId "belindan@litwareinc.com" -AddLicenses @{} -RemoveLicenses @($e3Sku.SkuId)
# Assign E5
Set-MgUserLicense -UserId "belindan@litwareinc.com" -AddLicenses @{SkuId = $e5Sku.SkuId} -RemoveLicenses @()
Sie können die Änderung des Abonnements für das Benutzerkonto mit diesem Befehl überprüfen.
Get-MgUserLicenseDetail -UserId "belindan@litwareinc.com"
Verwenden der Azure Active Directory PowerShell für Graph-Module
Hinweis
Das cmdlet Set-AzureADUserLicense soll eingestellt werden. Migrieren Sie Ihre Skripts wie oben beschrieben zum Set-MgUserLicense-Cmdlet des Microsoft Graph SDK. Weitere Informationen finden Sie unter Migrieren Ihrer Apps für den Zugriff auf die Lizenzverwaltungs-APIs von Microsoft Graph.
Stellen Sie zunächst eine Verbindung mit Ihrem Microsoft 365-Mandanten her.
Listen Sie als Nächstes die Lizenzpläne für Ihren Mandanten mit diesem Befehl auf.
Get-AzureADSubscribedSku | Select SkuPartNumber
Rufen Sie als Nächstes den Anmeldenamen des Kontos ab, dem Sie eine Lizenz hinzufügen möchten, auch als Benutzerprinzipalname (UPN) bezeichnet.
Stellen Sie als Nächstes sicher, dass dem Benutzerkonto ein Nutzungsspeicherort zugewiesen ist.
Get-AzureADUser -ObjectID <user sign-in name (UPN)> | Select DisplayName, UsageLocation
Wenn kein Nutzungsspeicherort zugewiesen ist, können Sie einen mit den folgenden Befehlen zuweisen:
$userUPN="<user sign-in name (UPN)>"
$userLoc="<ISO 3166-1 alpha-2 country code>"
Set-AzureADUser -ObjectID $userUPN -UsageLocation $userLoc
Geben Sie abschließend den Benutzeranmeldungsnamen und den Lizenzplannamen an, und führen Sie diese Befehle aus.
$userUPN="<user sign-in name (UPN)>"
$planName="<license plan name from the list of license plans>"
$License = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$License.SkuId = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $planName -EQ).SkuID
$LicensesToAssign = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$LicensesToAssign.AddLicenses = $License
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $LicensesToAssign
Verwenden des Microsoft Azure Active Directory-Moduls für Windows PowerShell
Hinweis
Die Cmdlets Set-MsolUserLicense und New-MsolUser (-LicenseAssignment) sollen eingestellt werden. Migrieren Sie Ihre Skripts wie oben beschrieben zum Set-MgUserLicense-Cmdlet des Microsoft Graph SDK. Weitere Informationen finden Sie unter Migrieren Ihrer Apps für den Zugriff auf die Lizenzverwaltungs-APIs von Microsoft Graph.
Stellen Sie zunächst eine Verbindung mit Ihrem Microsoft 365-Mandanten her.
Führen Sie den Get-MsolAccountSku
Befehl aus, um die verfügbaren Lizenzierungspläne und die Anzahl der verfügbaren Lizenzen in jedem Plan in Ihrer Organisation anzuzeigen. Die Anzahl der verfügbaren Lizenzen in jedem Plan ist ActiveUnits - WarningUnits - ConsumedUnits. Weitere Informationen zu Lizenzierungsplänen, Lizenzen und Diensten finden Sie unter Anzeigen von Lizenzen und Diensten mit PowerShell.
Hinweis
PowerShell Core unterstützt nicht das Microsoft Azure Active Directory-Modul für Windows PowerShell und Cmdlets mit Msol im Namen. Um diese Cmdlets weiterhin verwenden zu können, müssen Sie sie über Windows PowerShell ausführen.
Führen Sie diesen Befehl aus, um die nicht lizenzierten Konten in Ihrer Organisation zu finden.
Get-MsolUser -All -UnlicensedUsersOnly
Sie können Lizenzen nur Benutzerkonten zuweisen, für die die UsageLocation-Eigenschaft auf einen gültigen ISO 3166-1 Alpha-2-Ländercode festgelegt ist. „US" steht zum Beispiel für die Vereinigten Staaten und „FR" für Frankreich. Einige Microsoft 365-Dienste sind in bestimmten Ländern nicht verfügbar. Weitere Informationen finden Sie unter Informationen zu Lizenzbeschränkungen.
Führen Sie diesen Befehl aus, um Konten zu finden, die keinen UsageLocation-Wert aufweisen.
Get-MsolUser -All | where {$_.UsageLocation -eq $null}
Führen Sie diesen Befehl aus, um den UsageLocation-Wert für ein Konto festzulegen.
Set-MsolUser -UserPrincipalName "<Account>" -UsageLocation <CountryCode>
Beispiel:
Set-MsolUser -UserPrincipalName "belindan@litwareinc.com" -UsageLocation US
Bei Verwendung des Get-MsolUser-Cmdlets ohne den -All-Parameter werden nur die ersten 500 Konten zurückgegeben.
Zuweisen von Lizenzen zu Benutzerkonten
Um einem Benutzer eine Lizenz zuzuweisen, verwenden Sie den folgenden Befehl in PowerShell.
Set-MsolUserLicense -UserPrincipalName "<Account>" -AddLicenses "<AccountSkuId>"
In diesem Beispiel wird dem nicht lizenzierten Benutzer belindan@litwareinc.comeine Lizenz aus dem Lizenzierungsplan litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) zugewiesen:
Set-MsolUserLicense -UserPrincipalName "belindan@litwareinc.com" -AddLicenses "litwareinc:ENTERPRISEPACK"
Führen Sie diesen Befehl aus, um allen nicht lizenzierten Benutzern eine Lizenz zuzuweisen.
Get-MsolUser -All -UnlicensedUsersOnly [<FilterableAttributes>] | Set-MsolUserLicense -AddLicenses "<AccountSkuId>"
Hinweis
Sie können einem Benutzer nicht mehrere Lizenzen aus dem gleichen Lizenzierungsplan zuweisen. Wenn Sie nicht über genügend verfügbare Lizenzen verfügen, werden die Lizenzen den Benutzern in der Reihenfolge zugewiesen, in der sie von dem Get-MsolUser-Cmdlet zurückgegeben werden, bis alle Lizenzen vergeben sind.
In diesem Beispiel werden allen nicht lizenzierten Benutzern Lizenzen aus dem Lizenzierungsplan litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) zugewiesen:
Get-MsolUser -All -UnlicensedUsersOnly | Set-MsolUserLicense -AddLicenses "litwareinc:ENTERPRISEPACK"
In diesem Beispiel werden diese Lizenzen nicht lizenzierten Benutzern in der Vertriebsabteilung im USA zugewiesen:
Get-MsolUser -All -Department "Sales" -UsageLocation "US" -UnlicensedUsersOnly | Set-MsolUserLicense -AddLicenses "litwareinc:ENTERPRISEPACK"
Verschieben eines Benutzers in ein anderes Abonnement (Lizenzplan) mit dem Azure Active Directory PowerShell für Graph-Modul
Stellen Sie zunächst eine Verbindung mit Ihrem Microsoft 365-Mandanten her.
Rufen Sie als Nächstes den Anmeldenamen des Benutzerkontos ab, für das Sie abonnements wechseln möchten, auch als Benutzerprinzipalname (UPN) bezeichnet.
Listen Sie als Nächstes die Abonnements (Lizenzpläne) für Ihren Mandanten mit diesem Befehl auf.
Get-AzureADSubscribedSku | Select SkuPartNumber
Listen Sie als Nächstes mit diesen Befehlen die Abonnements auf, über die das Benutzerkonto derzeit verfügt.
$userUPN="<user account UPN>"
$licensePlanList = Get-AzureADSubscribedSku
$userList = Get-AzureADUser -ObjectID $userUPN | Select -ExpandProperty AssignedLicenses | Select SkuID
$userList | ForEach { $sku=$_.SkuId ; $licensePlanList | ForEach { If ( $sku -eq $_.ObjectId.substring($_.ObjectId.length - 36, 36) ) { Write-Host $_.SkuPartNumber } } }
Identifizieren Sie das Abonnement, über das der Benutzer derzeit verfügt (das FROM-Abonnement) und das Abonnement, in das der Benutzer verschoben wird (das TO-Abonnement).
Geben Sie abschließend die To- und FROM-Abonnementnamen (SKU-Teilenummern) an, und führen Sie diese Befehle aus.
$subscriptionFrom="<SKU part number of the current subscription>"
$subscriptionTo="<SKU part number of the new subscription>"
# Unassign
$license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$licenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$licenses.RemoveLicenses = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $subscriptionFrom -EQ).SkuID
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses
# Assign
$license.SkuId = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $subscriptionTo -EQ).SkuID
$licenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$licenses.AddLicenses = $License
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses
Sie können die Änderung des Abonnements für das Benutzerkonto mit diesen Befehlen überprüfen.
$licensePlanList = Get-AzureADSubscribedSku
$userList = Get-AzureADUser -ObjectID $userUPN | Select -ExpandProperty AssignedLicenses | Select SkuID
$userList | ForEach { $sku=$_.SkuId ; $licensePlanList | ForEach { If ( $sku -eq $_.ObjectId.substring($_.ObjectId.length - 36, 36) ) { Write-Host $_.SkuPartNumber } } }
Siehe auch
Verwalten von Benutzerkonten, Lizenzen und Gruppen mit PowerShell
Verwalten von Microsoft 365 mit PowerShell
Erste Schritte mit PowerShell für Microsoft 365
Verwenden des Microsoft Graph-Benutzers: assignLicense- und subscribedSku-APIs