【问题标题】:Azure AD Graph API: Bulk update of usersAzure AD Graph API:批量更新用户
【发布时间】:2017-04-20 13:18:52
【问题描述】:

Azure AD Graph API 是否支持对用户进行批处理?例如,如果我想为组织中的数百名用户更新位置,有什么办法可以做到吗?我能找到的唯一信息是这里描述的:https://msdn.microsoft.com/en-us/library/azure/ad/graph/howto/azure-ad-graph-api-batch-processing

但据我了解,您只能在给定的批处理操作中对单个用户实体进行批处理操作,即使这样也仅限于每个变更集 5 次操作。所以我唯一的选择似乎是顺序调用 API 来更新列表中的每个用户。我找不到 Microsoft 可能强制执行的任何正式记录的速率限制。所以我不确定这种方法是否可行。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: azure-ad-graph-api


    【解决方案1】:

    是的,Azure AD Graph API 支持对用户进行批处理。请参考this code sample,检查该代码示例中的CreateUsersTest 函数。要使该示例正常工作,您需要为您的客户端应用添加 Read and write directory data 应用权限:

    另一种方法是使用powershell使用批量导入过程添加多个用户:

    1. 首先创建一个具有适当属性的 csv 文件,例如:

    2. 那么你可以安装Azure ActiveDirectory Powershell (MSOnline)

    3. 连接服务:

      PS C:\WINDOWS\system32> connect-msolservice
      
    4. 从 csv 文件导入用户:

      $users = Import-Csv E:\a.csv
      
    5. 使用New-MsolUser 命令创建用户。

      $users | ForEach-Object {New-MsolUser -UserPrincipalName $_.UserName -FirstName $_.FirstName -LastName $_.LastName –DisplayName $_.DisplayName -Title $_.JobTitle -Department $_.Department -Country $_.Country}
      

    更新:

    请参考文档:https://msdn.microsoft.com/en-us/library/azure/ad/graph/howto/azure-ad-graph-api-batch-processing

    Graph API 支持 OData 规范定义的功能子集:

    单个批次最多可以包含五个查询和/或更改集的组合。

    一个变更集最多可以包含一个源对象修改和最多 20 个组合的添加链接和删除链接操作。更改集中的所有操作都必须在单个源实体上。

    在您的方案中,单个源实体意味着一个用户实体,您可以创建一个用户,在更改集中修改该用户,但不能在一个更改集中创建两个用户,因为它们是两个实体。

    似乎没有此类文档列出批处理的速率限制,但我已经测试了使用上述代码创建 2000 多个用户并且效果很好。

    【讨论】:

    • 谢谢!此处的代码示例和 powershell 命令确实有帮助。但是,我对“单个实体”的含义有点困惑(正如我最初发布的链接中所指定的那样。我不确定是否包含多个用户更新请求的变更集(/users/,/ users/....) 被认为是一个有效的变更集。此外,这提出了我的另一个问题 - 即使使用此批处理,我一次只能更新 5 个用户。如果我要更新 5000 个用户,那仍然是 1000 个批处理请求。是否有一些速率限制可能会阻止我这样做?如果是这样,我从哪里获得这些信息?
    • @sdworld,我已经更新了我的答案来回答你的问题,如果有帮助请告诉我。
    • 感谢您的澄清。这有帮助!
    猜你喜欢
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多