如何在所有者离开组织时管理孤立流

本文介绍如何在所有者离开组织时管理孤立流。

适用于: Power Automate
原始 KB 数: 4556130

什么是孤立流?

当流不再具有有效的所有者时,流会变成孤立流。 当流的创建者或所有者离开组织且没有共同所有者时,通常会发生这种情况。 如果流使用需要身份验证的连接,则它可能会因为用户标识不再有效而开始失败。

管理员可以通过将一个或多个共同所有者添加到流程来保持业务流程的连续性。 共同所有者基本上完全控制该流,就像原始所有者一样,并且可以修复连接的身份验证(如果有)并启用流(如果已禁用)。

如何检查是否存在孤立流

注意

只有特权用户才能查看没有任何有效所有者的流。

在 Power Platform 管理中心的环境页上,转到“资源”选项卡,然后打开“流”列表。 孤立流没有所有者显示在“所有者列中。

选择“ 加载更多 ”以加载下一组流,以确保已查看可能孤立的所有流。

将新的共同所有者分配给孤立流

  1. 从流列表中选择孤立流以打开流详细信息页。
  2. 选择“所有者”列表底部的“ 管理共享 ”。
  3. 键入新的所有者名称并选择新的所有者帐户。
  4. 选择“保存”,保存更改。

注意

如果组织中存在大量流,则很难找到孤立流。 在这种情况下,还可以通过 PowerShell cmdlet 管理孤立的流。

通过管理员的 Power Automate cmdlet 管理孤立流

作为管理员,还可以通过为管理员运行 Power Apps cmdlet 来管理流。 如果之前尚未完成安装,请确保已按照说明完成安装。

修复一个流的权限

需要环境名称和流名称(GUID)。 运行具有环境名称和流名称的 Get-AdminFlowOwnerRole cmdlet 以获取用户及其角色的列表。 这使你能够验证为流设置的当前权限。

若要将共同所有者分配到流,请使用 Set-AdminFlowOwnerRole 新所有者的 Microsoft Entra 主体对象 ID 运行 cmdlet。

Set-AdminFlowOwnerRole -EnvironmentName <env name> -FlowName <flow name> -PrincipalType User -RoleName CanEdit -PrincipalObjectId <new owner object id>

注意

可以通过运行 Get-AzureADUser cmdlet(即来自 AzureAD 模块)来获取用户的 Microsoft Entra 主体对象 ID。 在运行 Get-AzureADUser cmdlet 之前,需要调用Connect-AzureAD该 cmdlet。

注意

自 2024 年 3 月 30 日起,Azure AD 和 MSOnline PowerShell 模块已弃用。 若要了解详细信息,请阅读有关弃用的更新。 在此日期之后,对这些模块的支持仅限于到 Microsoft Graph PowerShell SDK 的迁移帮助和安全性修复。 弃用的模块将持续运行至 2025 年 3 月 30 日。

我们建议迁移到 Microsoft Graph PowerShell,以便与 Microsoft Entra ID(以前称为 Azure AD)进行交互。 有关常见迁移问题,请参阅迁移常见问题解答注意:2024 年 6 月 30 日之后,MSOnline 版本 1.0.x 可能会遇到中断。

Get-AdminFlowOwnerRole再次运行该 cmdlet 以验证新所有者是否在列表中。

修复特定用户创建的流的权限

通过运行以下 cmdlet 获取给定用户创建的流列表,然后应用上述部分来修复列表中的每个流。

Get-AdminFlow -EnvironmentName <env name> -CreatedBy <user-object-id>

列出环境中的所有孤立流

若要获取没有有效用户的所有流,请循环访问一个环境中的所有流,并验证至少有一个所有者或共同所有者存在于 Microsoft Entra ID 中。 以下脚本提供了一个示例:

Connect-AzureAD
$env = "<your environment name>"
$flows = Get-AdminFlow -EnvironmentName $env
foreach ($flow in $flows)
{
    $hasValidOwner = $false
    $permissions = Get-AdminFlowOwnerRole -EnvironmentName $env -FlowName $flow.FlowName
    foreach ($permission in $permissions) 
    {
        $roleType = $permission.RoleType
        
        if ($roleType.ToString() -eq "Owner" -or $roleType.ToString() -eq "CanEdit")
        {
            $userId = $permission.PrincipalObjectId
            $users = Get-AzureADUser -Filter "ObjectId eq '$userId'"

            if ($users.Length -gt 0)
            {
                $hasValidOwner = $true
                break
            }
        }
    }

    if ($hasValidOwner -eq $false)
    {
        $flow
    }
}

还可以注入 Set-AdminFlowOwnerRole 该 cmdlet,为没有有效所有者的每个流分配共同所有者。