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).

Zuweisen von Microsoft 365-Lizenzen zu Benutzerkonten mit dem Microsoft Graph PowerShell SDK

Hinweis

Das folgende Skript verwendet Microsoft Graph PowerShell. Weitere Informationen finden Sie unter Übersicht über Microsoft Graph PowerShell.

Informationen zur Verwendung verschiedener Methoden zur Authentifizierung Connect-Graph in einem unbeaufsichtigten Skript finden Sie im Artikel Cmdlets für das Authentifizierungsmodul in Microsoft Graph PowerShell.

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 Ihrem organization 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 Ihrem organization 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 Ihrem organization 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/Regionen 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

Zum 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"

Siehe auch

Verwalten von Microsoft 365 mit PowerShell

Verwalten von Microsoft 365 mit PowerShell

Erste Schritte mit dem Microsoft Graph PowerShell SDK

Verwenden des Microsoft Graph-Benutzers: assignLicense- und subscribedSku-APIs