Entfernen Microsoft 365 Lizenzen aus Benutzerkonten mit PowerShell

Dieser Artikel gilt sowohl für Microsoft 365 Enterprise als auch für Office 365 Enterprise.

Hinweis

Erfahren Sie, wie Sie Lizenzen aus Benutzerkonten mit dem Microsoft 365 Admin Center entfernen. Eine Liste der zusätzlichen Ressourcen finden Sie unter Verwalten von Benutzern und Gruppen.

Verwenden der Azure Active Directory PowerShell für Graph-Module

Stellen Siezunä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, für das Sie eine Lizenz entfernen möchten, die auch als Benutzerprinzipalname (USER Principal Name, UPN) bezeichnet wird.

Geben Sie schließlich die Namen der Benutzeranmeldung und des Lizenzplans an, entfernen Sie die Zeichen "<" und ">", 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.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 Anmeldenamen des Benutzers an, entfernen Sie die Zeichen "<" und ">", und führen Sie diese Befehle aus.

$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 PowerShell

Stellen Siezunächst eine Verbindung mit Ihrem Microsoft 365 Mandanten her.

Informationen zum Lizenzierungsplan (AccountSkuID) in Ihrer Organisation finden Sie in den folgenden Themen:

Bei Verwendung des Get-MsolUser-Cmdlets ohne den -All-Parameter werden nur die ersten 500 Konten zurückgegeben.

Entfernen von Lizenzen aus Benutzerkonten

Verwenden Sie die folgende Syntax, um Lizenzen von einem vorhandenen Benutzerkonto zu entfernen:

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. Um diese Cmdlets weiterhin verwenden zu können, müssen Sie sie über Windows PowerShell ausführen.

In diesem Beispiel wird die Lizenz litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) aus dem Benutzerkonto BelindaN@litwareinc.com entfernt.

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

Hinweis

Sie können das Cmdlet nicht verwenden, um die Set-MsolUserLicense Zuweisung von Benutzern von abgebrochenen Lizenzen aufzuheben. Sie müssen dies einzeln für jedes Benutzerkonto im Microsoft 365 Admin Center tun.

Um alle Lizenzen aus einer Gruppe vorhandener lizenzierter Benutzer zu entfernen, verwenden Sie eine der folgenden Methoden:

  • Filtern der Konten basierend auf einem vorhandenen Kontoattribut Verwenden Sie dazu die folgende 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 VEREINIGTEn Staaten entfernt.

$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:
  1. Erstellen und speichern Sie eine Textdatei wie die folgende, die in jeder Zeile ein Konto enthält:
akol@contoso.com
tjohnston@contoso.com
kakers@contoso.com
  1. Verwenden Sie folgende 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" definiert sind.

$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:

$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. Weitere Informationen finden Sie unter Löschen und Wiederherstellen von Benutzerkonten mit PowerShell.

Siehe auch

Verwalten von Microsoft 365-Benutzerkonten, -Lizenzen und -Gruppen mit PowerShell

Verwalten von Microsoft 365 mit PowerShell

Erste Schritte mit PowerShell für Microsoft 365