MS Graph无法移除用户许可证:提示许可证继承自组但用户已退组
问题描述
用户已从分配A3许可证的组中移除,但Entra ID里仍显示该用户拥有A3许可证,且当前不在该组内。尝试用以下PowerShell代码直接移除用户的A3许可证时触发错误:
$uri = '/users/{0}/assignLicense' -f $userId $licenseUpdatePayload = @{ addLicenses = @() removeLicenses = @( $A3LicenseSku ) } Invoke-MgGraphRequest -Uri $uri -Method POST -Body $licenseUpdatePayload
错误信息:
Invoke-MgGraphRequest: POST https://graph.microsoft.com/v1.0/users/<#######>/assignLicense HTTP/1.1 400 Bad Request Cache-Control: no-cache Transfer-Encoding: chunked Vary: Accept-Encoding Strict-Transport-Security: max-age=31536000 request-id: <#######> client-request-id: <#######> x-ms-ags-diagnostic: {"ServerInfo":{"DataCenter":"<#######>","Slice":"E","Ring":"4","ScaleUnit":"000","RoleInstance":"<#######>"}} x-ms-resource-unit: 1 Date: Mon, 20 Nov 2023 20:51:01 GMT Content-Type: application/json Content-Encoding: gzip {"error":{"code":"Request_BadRequest","message":"User license is inherited from a group membership and it cannot be removed directly from the user.","innerError":{"date":"2023-11-20T20:51:01","request-id":"<#######>","client-request-id":"<#######>"}}}
解决方案
确认组许可证同步状态
Entra ID的组许可证分配变更可能存在延迟,先在Entra管理中心查看原A3许可证组的「许可证」页面,确认分配对象中已无该用户。若同步未完成,等待15-30分钟后再检查用户许可证状态。排查用户是否属于其他A3许可证组
错误提示许可证来自组继承,需确认用户是否还在其他分配了A3许可证的组中。使用以下Graph API查询用户的组成员身份:Invoke-MgGraphRequest -Uri "/users/$userId/memberOf" -Method GET遍历返回结果,检查哪些组分配了A3许可证,若存在则移除用户对应组的成员身份。
触发组许可证同步
若确认用户已不在任何A3许可证组但状态未更新,可重新触发组的许可证分配同步:# 替换$groupId为原A3许可证组ID Invoke-MgGraphRequest -Uri "/groups/$groupId/assignLicense" -Method POST -Body @{ addLicenses = @(@{skuId = $A3LicenseSku}) removeLicenses = @() }此操作会强制刷新组的许可证分配,间接更新用户的许可证状态。
重置用户会话刷新状态
若上述步骤无效,可能是Entra ID缓存异常,执行以下命令重置用户会话:Invoke-MgGraphRequest -Uri "/users/$userId/resetSignInSessions" -Method POST等待数分钟后再次检查用户许可证状态。
关键说明
错误明确指出该许可证是通过组继承获得的,不能直接从用户层面移除继承的许可证,必须通过调整组成员身份或触发组同步来解决,直接操作用户许可证会触发400错误。
内容的提问来源于stack exchange,提问作者BenjaminSelby
相关产品推荐
相关产品推荐

