Power BI连接Microsoft 365管理中心报错及用户许可列表获取求助
问题分析与解决方案
错误原因
你混淆了前端管理门户和API服务端点:Microsoft 365管理中心(admin.microsoft.com)是面向人工操作的网页后台,并非供程序调用的API接口。你在Power BI中选择Web API模式并填入密钥,但该门户根本不支持API密钥认证机制,也没有对应的密钥名称参数,因此触发了A web API key can only be specified when a web API key name is provided错误。
另外,你参考的Office 365管理API主要用于审计日志、告警推送等场景,获取用户许可信息更适合使用微软官方推荐的Microsoft Graph API统一接口。
正确的获取方法
方法1:通过Microsoft Graph API手动构建查询(适合有技术基础的用户)
- 在Power BI中点击「获取数据」>「空白查询」,进入Power Query编辑器。
- 打开「高级编辑器」,替换为以下M代码(需先在Azure AD注册应用,授予
User.Read.All和Directory.Read.All权限,并由管理员完成权限同意):let Source = Json.Document(Web.Contents("https://graph.microsoft.com/v1.0/users?$select=id,displayName,userPrincipalName&$expand=assignedLicenses")), value = Source[value], #"转换为表" = Table.FromList(value, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"展开用户信息" = Table.ExpandRecordColumn(#"转换为表", "Column1", {"displayName", "userPrincipalName", "assignedLicenses"}, {"显示名称", "用户主体名称", "已分配许可"}), #"展开许可列表" = Table.ExpandListColumn(#"展开用户信息", "已分配许可"), #"提取SKU ID" = Table.ExpandRecordColumn(#"展开许可列表", "已分配许可", {"skuId"}, {"SKU ID"}), #"匹配许可名称" = Table.AddColumn(#"提取SKU ID", "许可名称", each Json.Document(Web.Contents("https://graph.microsoft.com/v1.0/subscribedSkus/" & [SKU ID]))[skuPartNumber]) in #"匹配许可名称" - 首次运行时选择「OAuth2」认证方式,用拥有全局管理员权限的账号登录即可。
方法2:使用Power BI内置的Microsoft 365数据源(简单快捷)
直接在Power BI的「获取数据」搜索框中输入「Microsoft 365管理中心」,选择对应的数据源,登录后即可直接获取包含用户许可信息的数据集,无需手动编写API请求,适合非技术用户。
内容的提问来源于stack exchange,提问作者Francesco Mantovani
相关产品推荐
相关产品推荐

