You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Microsoft Graph和PowerShell通过组分配Office365许可证遇400错误求助

排查PowerShell调用Graph API为组分配Office 365许可证时的400 Bad Request错误

错误核心原因

你的请求体格式不符合Microsoft Graph groups/assignLicense API的要求。该接口需要特定的嵌套结构,而非直接传入单独的SkuId字段。

修正步骤

  • 调整请求体结构:assignLicense API要求请求体必须包含两个数组:
    • addLicenses:要分配的许可证SKU对象数组,每个对象需包含skuId
    • removeLicenses:要移除的许可证SKU ID数组(无需移除则传空数组)
  • 避免手动拼接JSON:用PowerShell哈希表定义结构后转成JSON,减少语法错误概率
  • 确认API权限:确保应用注册已分配以下应用权限(非委派权限)并完成管理员同意:
    • Group.ReadWrite.All
    • Directory.ReadWrite.All(或更细粒度的License.ReadWrite.All)

修正后的完整脚本

$connectiondetails = @{
    # Tenant ID here
    'tenantid' = ""
    # Application (client) ID here
    'clientid' = ""
    # Secret id here
    'ClientSecret' = "" | ConvertTo-SecureString -AsPlainText -Force
}

$token = Get-MsalToken @connectiondetails
$tokenid_ = $token.AccessToken

$uri = "https://graph.microsoft.com/v1.0/groups/ffbabc6f-aa87-40f3-8665-9d140e4a7adb/assignLicense"

# 构建符合API要求的请求体结构
$body = @{
    addLicenses = @(
        @{
            skuId = "cbdc14ab-d96c-4c30-b9f4-6ada7cdc1d46"
        }
    )
    removeLicenses = @()
} | ConvertTo-Json -Compress

# 调用API分配许可证
Invoke-RestMethod -Uri $uri -Body $body -ContentType "application/json" -Method Post -Headers @{Authorization=("bearer {0}" -f $tokenid_)}

额外排查点

  • 确认目标组ID(ffbabc6f-aa87-40f3-8665-9d140e4a7adb)有效且存在于你的租户中
  • 确认SKU ID(cbdc14ab-d96c-4c30-b9f4-6ada7cdc1d46)是租户中可用的许可证SKU
  • 可以添加-Verbose参数到Invoke-RestMethod,查看更详细的请求/响应信息辅助排查

内容的提问来源于stack exchange,提问作者Bernietechy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 18:41:04