【问题标题】:Automating SharePoint Online access for External Users through Flow/Azure通过 Flow/Azure 为外部用户自动访问 SharePoint Online
【发布时间】:2019-10-20 00:05:04
【问题描述】:

我对 SharePoint/Azure/PowerShell 还是很陌生,如果我问的是一个愚蠢的问题,我深表歉意!

我们目前在我们的 O365 租户上托管了客户端 SharePoint 网站,我们很快就会向我们各自的每个客户推出每个网站的访问权限。最初,只有每个客户的高级管理人员才能访问这些站点,但是随着时间的推移,我们很可能也会添加其他所有人;为了简化新用户流程并使我们不必添加每个单独的员工,我们一直在考虑使用 Flow 来自动化用户访问,目标是添加经过身份验证的外部用户,而不需要管理员的太多实际输入,而不是一个简单的批准/拒绝流程。

总体规划如下:

Visio 大纲

  1. 每个客户端站点都有一个名为“员工访问列表”的 SharePoint 自定义列表。所述列表将具有以下列:请求 ID(文本)、名字(文本)、姓氏(文本)、职位(文本)、公司(文本)、联系电话(文本)、电子邮件(文本)、 SharePoint Access(是/否布尔值)。
  2. 如果员工需要访问 SharePoint 网站,则他们各自的经理会将员工添加到列表中并填写上述所有字段,将“SharePoint 访问”项的值设置为“是”。李>
  3. 这将触发流程,并向我和其他管理员发送一封批准电子邮件,其中详细说明了要创建的用户以及提交请求的用户。
  4. 以某种方式插入脚本 - 如果请求获得批准,该脚本将运行,并为用户设置访问权限。
  5. 然后电子邮件通知会自动发送给 SharePoint 列表项的创建者,通知他们用户现在可以访问。

在第 4 步中,如果请求获得批准,我有点不知道该怎么做 - 我在下面编写了一个小 PowerShell 脚本,它几乎实现了我的目标,因为它创建了一个外部用户 PnP 组和 PnP 角色定义(如果还没有),拉出“员工访问”列表上的“电子邮件”字段中的内容并运行 Add-PnPUsertoGroup 将用户拉到 PnP 组,然后向用户发送一封电子邮件,其中包含指向 SharePoint 网站的链接,允许他们访问它。然而:

  • 我编写的脚本针对 SharePoint 列表中的每个人,而理想情况下,我只希望脚本针对新添加到列表中/在批准电子邮件中列出的唯一用户,并且只针对他们。我假设我必须将来自 Flow 的信息通过管道传输到脚本中,我什至不确定这是否可行,如果是,我不知道该怎么做。
  • 我知道 Azure Functions 和 Azure Automation 可用于将脚本插入到 Flows 中,但我都没有这方面的经验,所以我不确定哪个是更合适的选项。关于如何插入 PowerShell 脚本以及如何将流中的内容通过管道传输到所述脚本中是否有任何指导?

PowerShell脚本如下:

希望这一切都有意义 - 任何指导将不胜感激。

谢谢!

编辑: 就像一些额外的信息一样,这里是当前的流程:

Flow Part 1

Flow Part 2

Flow Part 3

【问题讨论】:

    标签: powershell sharepoint azure-functions azure-automation power-automate


    【解决方案1】:

    已经找到了上述问题的答案 - 虽然 Azure Functions/Automation 是一个选项,但您不一定需要它们或从 Flow 运行的 PowerShell 脚本,在这种情况下,我的目标场景是使用 MS Graph Invitation API 实现的,应用权限和 HTTP SharePoint 调用。

    查看附件截图:

    Flow Answer 1

    Flow Answer 2

    Flow Answer 3

    第 1 步:设置一个有权调用 MS Graph 的应用程序 - 使用本指南获取有关如何执行此操作的帮助 - http://blogopaxio.azurewebsites.net/accessing-graph-api-from-microsoft-flow-using-application-permissions-2/

    第 2 步:将 HTTP 添加到 MS Graph 并按照本文的屏幕截图 1 设置参数 - 此操作将创建访客用户和用户登录网站所需的邀请 URL。

    第 3 步:此时,运行流程,以便我们可以从 HTTP 步骤的输出正文中获取“inviteRedeemURL” - 您需要将此特定 URL 在您的电子邮件中单独发送给最终用户。

    第 4 步:暂停一两分钟,以确保来自先前操作的信息“有效” - 如果一切正常,此时,用户实际上将创建他们的访客帐户,而您'将能够在您的 O365 管理中心的用户下看到他们,但他们不会知道他们的帐户访问权限(我们将在最后的电子邮件中通知他们)。

    第 5 步:使用“向 SharePoint 发送 HTTP 请求”操作将用户添加到 SharePoint 安全组。请注意,此操作的 URI 中的“sitegroups(19)”是指您将其放入的 PnP 组的 ID 号,因此在我的情况下,组 ID 为 19。如果您不确定 ID使用 PnP 命令通过 PowerShell 连接到您的 SharePoint 站点,然后运行 ​​Get-PnPGroup。

    第 6 步:使用 Outlook 发送电子邮件操作向受邀用户发送电子邮件 - 仅供参考 - 我的屏幕截图中的“SharePoint Site”变量实际上是“inviteRedeemURL”。

    希望这对不确定如何执行此操作的其他人有所帮助。如果有人有更好的解决方案可以通过各种方式实现这一点!

    谢谢!

    【讨论】:

      猜你喜欢
      • 2019-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-12
      • 2017-02-28
      • 2016-05-29
      • 1970-01-01
      • 2017-09-24
      相关资源
      最近更新 更多