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

如何通过Graph API获取含Microsoft Teams Phone许可证的用户列表

解决方案

1. 批量获取所有用户的完整许可证详情

Microsoft Graph 支持通过 $expand 导航属性,一次性获取用户列表及其完整的许可证详情,无需逐个遍历用户。具体请求如下:

GET https://graph.microsoft.com/v1.0/users?$select=displayName,givenName,jobTitle,mail,mobilePhone,officeLocation,surname,userPrincipalName,id&$expand=licenseDetails

该请求会返回每个用户的基础信息,同时附带licenseDetails数组,包含你需要的skuPartNumber、servicePlans等完整许可证数据,和单个用户请求/users/{id}/licenseDetails的返回结构一致。

注意事项:

  • 该请求默认分页返回100条用户数据,若用户数量超过限制,需通过返回结果中的@odata.nextLink继续获取后续页数据。
  • 需确保调用账号拥有User.Read.All或Directory.Read.All权限(应用权限或委派权限均可,批量操作推荐应用权限)。

2. 筛选仅拥有Microsoft Teams Phone许可证的用户

你可以通过两种方式直接筛选目标用户,无需先获取所有用户数据:

方式一:通过许可证SKU ID筛选

首先需要确认你的租户中Microsoft Teams Phone对应的SKU ID(可通过GET https://graph.microsoft.com/v1.0/subscribedSkus获取租户所有订阅的许可证信息,找到skuPartNumber为MCOEV或TEAMS_PHONE_STANDARD的条目,提取其skuId)。

使用$filter筛选拥有该SKU的用户:

GET https://graph.microsoft.com/v1.0/users?$select=displayName,givenName,jobTitle,mail,mobilePhone,officeLocation,surname,userPrincipalName,id&$filter=assignedLicenses/any(s:s/skuId eq '替换为你的Teams Phone SKU ID')

方式二:通过服务计划名称筛选

如果Teams Phone是某个套餐中的服务计划,可直接筛选包含对应服务计划的用户(服务计划名称通常为MCOEV):

GET https://graph.microsoft.com/v1.0/users?$select=displayName,givenName,jobTitle,mail,mobilePhone,officeLocation,surname,userPrincipalName,id&$expand=licenseDetails&$filter=licenseDetails/any(ld:ld/servicePlans/any(sp:sp/servicePlanName eq 'MCOEV'))

注意事项:

  • 嵌套any的筛选器在用户数量极多时可能存在性能损耗,优先推荐使用SKU ID筛选的方式。
  • 不同租户的许可证SKU或服务计划可能存在差异,务必先通过subscribedSkus端点确认准确的标识。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:45:03