Entfernen von 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 zusätzlicher 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.
Zum Zuweisen und Entfernen von Lizenzen für einen Benutzer ist der Berechtigungsbereich "User.ReadWrite.All" oder eine der anderen Berechtigungen erforderlich, die auf der Referenzseite "Lizenz zuweisen" Graph-API aufgeführt sind.
Der Berechtigungsbereich "Organization.Read.All" ist erforderlich, um die im Mandanten verfügbaren Lizenzen zu lesen.
Connect-Graph -Scopes User.ReadWrite.All, Organization.Read.All
Informationen zum Lizenzierungsplan in Ihrer Organisation finden Sie in den folgenden Themen:
Entfernen von Lizenzen aus Benutzerkonten
Verwenden Sie die folgende Syntax, um Lizenzen von einem vorhandenen Benutzerkonto zu entfernen:
Set-MgUserLicense -UserId "<Account>" -RemoveLicenses @("<AccountSkuId1>") -AddLicenses @{}
In diesem Beispiel wird der Lizenzierungsplan für SPE_E5 (Microsoft 365 E5) vom Benutzer BelindaN@litwareinc.comentfernt:
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
Set-MgUserLicense -UserId "belindan@litwareinc.com" -RemoveLicenses @($e5Sku.SkuId) -AddLicenses @{}
Verwenden Sie die folgende Syntax, um alle Lizenzen aus einer Gruppe vorhandener lizenzierter Benutzer zu entfernen:
$licensedUsers = Get-MgUser -Filter 'assignedLicenses/$count ne 0' `
-ConsistencyLevel eventual -CountVariable licensedUserCount -All `
-Select UserPrincipalName,DisplayName,AssignedLicenses
foreach($user in $licensedUsers)
{
$licencesToRemove = $user.AssignedLicenses | Select -ExpandProperty SkuId
$user = Set-MgUserLicense -UserId $user.UserPrincipalName -RemoveLicenses $licencesToRemove -AddLicenses @{}
}
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.
Verwenden der Azure Active Directory PowerShell für Graph-Module
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, für das Sie eine Lizenz entfernen möchten, auch als Benutzerprinzipalname (USER Principal Name, UPN) bezeichnet.
Geben Sie abschließend 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 Namen der Benutzeranmeldung 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
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.
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.comentfernt.
Set-MsolUserLicense -UserPrincipalName belindan@litwareinc.com -RemoveLicenses "litwareinc:ENTERPRISEPACK"
Hinweis
Sie können das Set-MsolUserLicense
Cmdlet nicht verwenden, um die Zuweisung von Benutzern von stornierten Lizenzen aufzuheben. Sie müssen dies für jedes Benutzerkonto im Microsoft 365 Admin Center einzeln ausführen.
Verwenden Sie eine der folgenden Methoden, um alle Lizenzen aus einer Gruppe vorhandener lizenzierter Benutzer zu entfernen:
- 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 im USA 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:
- 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
- Verwenden Sie die 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