Entfernen von Microsoft 365-Lizenzen aus Benutzerkonten mit PowerShellRemove Microsoft 365 licenses from user accounts with PowerShell

Dieser Artikel gilt sowohl für Microsoft 365 Enterprise als auch für Office 365 Enterprise.This article applies to both Microsoft 365 Enterprise and Office 365 Enterprise.

Hinweis

Erfahren Sie, wie Sie Lizenzen aus Benutzerkonten mit dem Microsoft 365 Admin Center entfernen.Learn how to remove licenses from user accounts with the Microsoft 365 admin center. Eine Liste der zusätzlichen Ressourcen finden Sie unter Verwalten von Benutzern und Gruppen.For a list of additional resources, see Manage users and groups.

Verwenden der Azure Active Directory PowerShell für Graph-ModuleUse the Azure Active Directory PowerShell for Graph module

Stellen Sie zunächst eine Verbindung mit Ihrem Microsoft 365-Mandanten herzustellen.First, connect to your Microsoft 365 tenant.

Als Nächstes listen Sie die Lizenzpläne für Ihren Mandanten mit diesem Befehl auf.Next, list the license plans for your tenant with this command.

Get-AzureADSubscribedSku | Select SkuPartNumber

Als Nächstes erhalten Sie den Anmeldenamen des Kontos, für das Sie eine Lizenz entfernen möchten, auch als Benutzerprinzipalname (User Principal Name, UPN) bekannt.Next, get the sign-in name of the account for which you want remove a license, also known as the user principal name (UPN).

Geben Sie schließlich die Namen der Benutzer-Anmeldung und des Lizenzplans an, entfernen Sie die Zeichen "<" und ">", und führen Sie diese Befehle aus.Finally, specify the user sign-in and license plan names, remove the "<" and ">" characters, and run these commands.

$userUPN="<user sign-in name (UPN)>"
$planName="<license plan name from the list of license plans>"
$license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$License.RemoveLicenses = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $planName -EQ).SkuID
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $license

Um alle Lizenzen für ein bestimmtes Benutzerkonto zu entfernen, geben Sie den Benutzernamen an, entfernen Sie die Zeichen "<" und ">", und führen Sie diese Befehle aus.To remove all of the licenses for a specific user account, specify the user sign-in name, remove the "<" and ">" characters, and run these commands.

$userUPN="<user sign-in name (UPN)>"
$userList = Get-AzureADUser -ObjectID $userUPN
$Skus = $userList | Select -ExpandProperty AssignedLicenses | Select SkuID
if($userList.Count -ne 0) {
    if($Skus -is [array])
    {
        $licenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
        for ($i=0; $i -lt $Skus.Count; $i++) {
            $Licenses.RemoveLicenses +=  (Get-AzureADSubscribedSku | Where-Object -Property SkuID -Value $Skus[$i].SkuId -EQ).SkuID   
        }
        Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses
    } else {
        $licenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
        $Licenses.RemoveLicenses =  (Get-AzureADSubscribedSku | Where-Object -Property SkuID -Value $Skus.SkuId -EQ).SkuID
        Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses
    }
}

Verwenden des Microsoft Azure Active Directory-Moduls für Windows PowerShellUse the Microsoft Azure Active Directory Module for Windows PowerShell

Stellen Sie zunächst eine Verbindung mit Ihrem Microsoft 365-Mandanten herzustellen.First, connect to your Microsoft 365 tenant.

Informationen zum Lizenzierungsplan (AccountSkuID) in Ihrer Organisation finden Sie in den folgenden Themen:To view the licensing plan (AccountSkuID) information in your organization, see the following topics:

Bei Verwendung des Get-MsolUser-Cmdlets ohne den -All-Parameter werden nur die ersten 500 Konten zurückgegeben.If you use the Get-MsolUser cmdlet without using the -All parameter, only the first 500 accounts are returned.

Entfernen von Lizenzen aus BenutzerkontenRemoving licenses from user accounts

Verwenden Sie die folgende Syntax, um Lizenzen von einem vorhandenen Benutzerkonto zu entfernen:To remove licenses from an existing user account, use the following syntax:

Set-MsolUserLicense -UserPrincipalName <Account> -RemoveLicenses "<AccountSkuId1>", "<AccountSkuId2>"...

Hinweis

PowerShell Core unterstützt nicht das Microsoft Azure Active Directory-Modul für Windows PowerShell und Cmdlets mit Msol im Namen.PowerShell Core does not support the Microsoft Azure Active Directory Module for Windows PowerShell module and cmdlets with Msol in their name. Um diese Cmdlets weiterhin verwenden zu können, müssen Sie sie über Windows PowerShell ausführen.To continue using these cmdlets, you must run them from Windows PowerShell.

In diesem Beispiel wird die lizenz litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) aus dem Benutzerkonto BelindaN@litwareinc.com.This example removes the litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) license from the user account BelindaN@litwareinc.com.

Set-MsolUserLicense -UserPrincipalName belindan@litwareinc.com -RemoveLicenses "litwareinc:ENTERPRISEPACK"

Hinweis

Sie können das Set-MsolUserLicense Cmdlet nicht verwenden, um Benutzer von gekündigten Lizenzen zuzuweisen.You cannot use the Set-MsolUserLicense cmdlet to unassign users from canceled licenses. Sie müssen dies für jedes Benutzerkonto im Microsoft 365 Admin Center einzeln tun.You must do this individually for each user account in the Microsoft 365 admin center.

Verwenden Sie eine der folgenden Methoden, um alle Lizenzen aus einer Gruppe vorhandener lizenzierter Benutzer zu entfernen:To remove all licenses from a group of existing licensed users, use either of the following methods:

  • Filtern der Konten basierend auf einem vorhandenen Kontoattribut Verwenden Sie dazu die folgende Syntax:Filter the accounts based on an existing account attribute To do this, use the following syntax:
$userArray = Get-MsolUser -All <FilterableAttributes> | where {$_.isLicensed -eq $true}
for ($i=0; $i -lt $userArray.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $userArray[$i].UserPrincipalName -RemoveLicenses $userArray[$i].licenses.accountskuid
}

In diesem Beispiel werden alle Lizenzen aus allen Benutzerkonten in der Vertriebsabteilung in den USA entfernt.This example removes all licenses from all user accounts in the Sales department in the United States.

$userArray = Get-MsolUser -All -Department "Sales" -UsageLocation "US" | where {$_.isLicensed -eq $true}
for ($i=0; $i -lt $userArray.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $userArray[$i].UserPrincipalName -RemoveLicenses $userArray[$i].licenses.accountskuid
}
  • Verwenden einer Liste bestimmter Konten für eine bestimmte Lizenz Führen Sie dazu die folgenden Schritte aus:Use a list of specific accounts for a specific license To do this, perform the following steps:
  1. Erstellen und speichern Sie eine Textdatei wie die folgende, die in jeder Zeile ein Konto enthält:Create and save a text file that contains one account on each line like this:
akol@contoso.com
tjohnston@contoso.com
kakers@contoso.com
  1. Verwenden Sie folgende Syntax:Use the following syntax:
$x=Get-Content "<FileNameAndPath>"
for ($i=0; $i -lt $x.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $x[$i] -RemoveLicenses "<AccountSkuId1>","<AccountSkuId2>"...
}

In diesem Beispiel wird die lizenz litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) aus den Benutzerkonten entfernt, die in der Textdatei C:\My Documents\Accounts.txt.This example removes the litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) license from the user accounts defined in the text file C:\My Documents\Accounts.txt.

$x=Get-Content "C:\My Documents\Accounts.txt"
for ($i=0; $i -lt $x.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $x[$i] -RemoveLicenses "litwareinc:ENTERPRISEPACK"
}

Verwenden Sie die folgende Syntax, um alle Lizenzen aus allen vorhandenen Benutzerkonten zu entfernen:To remove all licenses from all existing user accounts, use the following syntax:

$userArray = Get-MsolUser -All | where {$_.isLicensed -eq $true}
for ($i=0; $i -lt $userArray.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $userArray[$i].UserPrincipalName -RemoveLicenses $userArray[$i].licenses.accountskuid
}

Eine andere Möglichkeit zum Freigeben einer Lizenz besteht im Löschen des Benutzerkontos.Another way to free up a license is by deleting the user account. Weitere Informationen finden Sie unter Löschen und Wiederherstellen von Benutzerkonten mit PowerShell.For more information, see Delete and restore user accounts with PowerShell.

Siehe auchSee also

Verwalten von Microsoft 365-Benutzerkonten, -Lizenzen und -Gruppen mit PowerShellManage Microsoft 365 user accounts, licenses, and groups with PowerShell

Verwalten von Microsoft 365 mit PowerShellManage Microsoft 365 with PowerShell

Erste Schritte mit PowerShell für Microsoft 365Getting started with PowerShell for Microsoft 365