Supprimer des licences Microsoft 365 des comptes d’utilisateur avec PowerShell
Cet article est valable pour Microsoft 365 Entreprise et Office 365 Entreprise.
Remarque
Découvrez comment supprimer des licences des comptes d’utilisateur avec le Centre d'administration Microsoft 365. Pour obtenir la liste des ressources supplémentaires, consultez Gérer les utilisateurs et les groupes.
Utiliser le Kit de développement logiciel (SDK) Microsoft Graph PowerShell
Tout d’abord, connectez-vous à votre locataire Microsoft 365.
L’attribution et la suppression de licences pour un utilisateur nécessitent l’étendue d’autorisation User.ReadWrite.All ou l’une des autres autorisations répertoriées dans la page de référence « Attribuer une licence » API Graph.
L’étendue d’autorisation Organization.Read.All est nécessaire pour lire les licences disponibles dans le locataire.
Connect-Graph -Scopes User.ReadWrite.All, Organization.Read.All
Pour afficher les informations du plan de licence dans votre organisation, consultez les rubriques suivantes :
Suppression de licences de comptes d’utilisateur
Pour supprimer des licences à partir d’un compte d’utilisateur existant, utilisez la syntaxe suivante :
Set-MgUserLicense -UserId "<Account>" -RemoveLicenses @("<AccountSkuId1>") -AddLicenses @{}
Cet exemple supprime le plan de licence SPE_E5 (Microsoft 365 E5) de l’utilisateur BelindaN@litwareinc.com:
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
Set-MgUserLicense -UserId "belindan@litwareinc.com" -RemoveLicenses @($e5Sku.SkuId) -AddLicenses @{}
Pour supprimer toutes les licences d’un groupe d’utilisateurs sous licence existants, utilisez la syntaxe suivante :
$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 @{}
}
Une autre façon de libérer une licence consiste à supprimer le compte d’utilisateur. Pour plus d’informations, consultez Supprimer et restaurer des comptes d’utilisateur avec PowerShell.
Utilisation du module Azure Active Directory PowerShell pour Graph
La mise hors service de l’applet de commande Set-AzureADUserLicense est planifiée. Migrez vos scripts vers l’applet de commande Set-MgUserLicense du Kit de développement logiciel (SDK) Microsoft Graph, comme décrit ci-dessus. Pour plus d’informations, consultez Migrer vos applications pour accéder aux API de gestion des licences à partir de Microsoft Graph.
Tout d’abord, connectez-vous à votre locataire Microsoft 365.
Ensuite, répertoriez les plans de licence pour votre locataire avec cette commande.
Get-AzureADSubscribedSku | Select SkuPartNumber
Ensuite, obtenez le nom de connexion du compte pour lequel vous souhaitez supprimer une licence, également appelé nom d’utilisateur principal (UPN).
Enfin, spécifiez les noms de connexion utilisateur et de plan de licence, supprimez les caractères «< » et «> », puis exécutez ces commandes.
$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
Pour supprimer toutes les licences d’un compte d’utilisateur spécifique, spécifiez le nom de connexion de l’utilisateur, supprimez les caractères «< » et «> », puis exécutez ces commandes.
$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
}
}
Utilisez le module Microsoft Azure Active Directory pour Windows PowerShell.
Remarque
Les applets de commande Set-MsolUserLicense et New-MsolUser (-LicenseAssignment) sont planifiées pour être mises hors service. Migrez vos scripts vers l’applet de commande Set-MgUserLicense du Kit de développement logiciel (SDK) Microsoft Graph, comme décrit ci-dessus. Pour plus d’informations, consultez Migrer vos applications pour accéder aux API de gestion des licences à partir de Microsoft Graph.
Tout d’abord, connectez-vous à votre locataire Microsoft 365.
Pour afficher les informations sur le plan de gestion des licences (AccountSkuID) dans votre organisation, consultez les rubriques suivantes :
Si vous utilisez la cmdlet Get-MsolUser sans utiliser le paramètre -All, seuls les 500 premiers comptes sont renvoyés.
Suppression de licences de comptes d’utilisateur
Pour supprimer des licences à partir d’un compte d’utilisateur existant, utilisez la syntaxe suivante :
Set-MsolUserLicense -UserPrincipalName <Account> -RemoveLicenses "<AccountSkuId1>", "<AccountSkuId2>"...
Remarque
PowerShell Core ne prend pas en charge le module Microsoft Azure Active Directory pour Windows PowerShell et les applets de commande incluant Msol dans leur nom. Pour continuer à utiliser ces applets de commande, vous devez les exécuter à partir de Windows PowerShell.
Cet exemple supprime la licence litwareinc:ENTERPRISEPACK (Office 365 Entreprise E3) du compte BelindaN@litwareinc.comd’utilisateur .
Set-MsolUserLicense -UserPrincipalName belindan@litwareinc.com -RemoveLicenses "litwareinc:ENTERPRISEPACK"
Remarque
Vous ne pouvez pas utiliser l’applet Set-MsolUserLicense
de commande pour annuler l’affectation d’utilisateurs de licences annulées . Vous devez le faire individuellement pour chaque compte d’utilisateur dans le Centre d'administration Microsoft 365.
Pour supprimer toutes les licences d’un groupe d’utilisateurs sous licence existants, utilisez l’une des méthodes suivantes :
- Filtrer les comptes en fonction d’un attribut de compte existant Pour ce faire, utilisez la syntaxe suivante :
$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
}
Cet exemple montre comment supprimer toutes les licences de tous les comptes d’utilisateur du service Ventes du États-Unis.
$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
}
- Utiliser une liste de comptes spécifiques pour une licence spécifique Pour ce faire, procédez comme suit :
- Créez et enregistrez un fichier texte contenant un seul compte sur chaque ligne comme suit :
akol@contoso.com
tjohnston@contoso.com
kakers@contoso.com
- Utilisez la syntaxe suivante :
$x=Get-Content "<FileNameAndPath>"
for ($i=0; $i -lt $x.Count; $i++)
{
Set-MsolUserLicense -UserPrincipalName $x[$i] -RemoveLicenses "<AccountSkuId1>","<AccountSkuId2>"...
}
Cet exemple supprime la licence litwareinc:ENTERPRISEPACK (Office 365 Entreprise E3) des comptes d’utilisateur définis dans le fichier texte 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"
}
Pour supprimer toutes les licences de tous les comptes d’utilisateur existants, utilisez la syntaxe suivante :
$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
}
Une autre façon de libérer une licence consiste à supprimer le compte d’utilisateur. Pour plus d’informations, consultez Supprimer et restaurer des comptes d’utilisateur avec PowerShell.
Voir aussi
Gérer les comptes d’utilisateurs, les licences et les groupes Microsoft 365 avec PowerShell