Photo by Markus Spiske / Unsplash
Set-MgGroupLicense - erreur assignLicense are missing parameters addLicenses

Set-MgGroupLicense - erreur assignLicense are missing parameters addLicenses

Published on 18 Mar 2025

La commande `Set-MgGroupLicense` peut poser des problèmes lorsqu'on tente de supprimer une licence d'un groupe en passant une liste vide pour `AddLicenses`,

Bastien Perez
Bastien Perez

Clap

Problème assignLicense are missing parameters addLicenses

La commande Set-MgGroupLicense peut poser problème lorsqu'on tente de supprimer une licence d'un groupe en passant une liste vide pour AddLicenses, ce qui est pourtant conforme à la documentation officielle.

Set-MgGroupLicense_Assign: One or more parameters of the operation 'assignLicense' are missing from the request payload. The missing parameters are: addLicenses.

Cette erreur survient avec le module 2.26.1 (pas testé d'autres modules).

Pour information, ci-dessous les codes qui ne fonctionnent pas:

# Test 1 KO
$groupID = 'xxx
$group = Get-MgGroup -GroupId $groupId -Property AssignedLicenses
$licensesToRemove = $group.AssignedLicenses.SkuId

$params = @{
    addLicenses = @()  # Empty array for addLicenses
    removeLicenses = $licensesToRemove
}

Set-MgGroupLicense -GroupId $groupId -BodyParameter $params

# Test 2 KO
Set-MgGroupLicense -GroupId xxx -AddLicenses @() -RemoveLicenses @('xxx')

# Test 3 KO
Set-MgGroupLicense -GroupId xxx -AddLicenses @{} -RemoveLicenses @('xxx')

Solution alternative avec Invoke-MgGraphRequest

Pour contourner ce problème, j'ai utilisé Invoke-MgGraphRequest qui permet d'appeler directement l'API Graph en passant un corps de requête correctement formaté.

Voici un script PowerShell fonctionnel :

$groupId = 'xxx'

# Récupérer les licences actuelles du groupe
$group = Get-MgGroup -GroupId $groupId -Property AssignedLicenses
$licensesToRemove = $group.AssignedLicenses.SkuId

# Préparer le corps de la requête pour supprimer toutes les licences
$body = @{
    addLicenses    = @()
    removeLicenses = $licensesToRemove
}

# Appel à l'API Graph pour supprimer les licences
Invoke-MgGraphRequest -Method POST -Uri "https://graph.microsoft.com/v1.0/groups/$groupId/assignLicense" -Body ($body | ConvertTo-Json)

Cette approche permet d'éviter les erreurs rencontrées avec Set-MgGroupLicense et garantit un fonctionnement correct.

En espérant qu'une mise à jour future des modules Microsoft.Graph corrigera ce comportement.

Comments

banner-Bastien Perez
Bastien Perez

Freelance Microsoft 365 - Active Directory - Modern Workplace

France