使用PowerShell为Office 365用户分配许可证失败,求排查原因
Office 365许可证分配命令报错的解决办法
你遇到的问题是因为Microsoft Graph PowerShell模块对-RemoveLicenses空数组的处理存在异常,导致发送给Graph API的请求payload里未包含该参数,触发了后端的参数缺失校验报错。
解决办法有两种:
方法一:将
-RemoveLicenses的参数值改为$null,替代空数组LicenceUser = Set-MgUserLicense -UserId $userid -Addlicenses @{SkuId = ($license.SkuId)} -RemoveLicenses $null -ErrorAction:Stop方法二:通过
-LicenseAssignment参数传递完整的许可证分配哈希表,确保参数被正确序列化到请求中$licenseParams = @{ AddLicenses = @(@{SkuId = $license.SkuId}) RemoveLicenses = @() } LicenceUser = Set-MgUserLicense -UserId $userid -LicenseAssignment $licenseParams -ErrorAction:Stop
这两种方式都能让Graph API接收到removeLicenses参数(即使是空值),从而顺利完成许可证分配操作。
内容的提问来源于stack exchange,提问作者Nick_K




