共用方式為


如何在擁有者離開組織時管理孤立流程

本文說明如何在擁有者離開組織時管理孤立流程。

適用於: Power Automate
原始 KB 編號: 4556130

什麼是孤立流程?

當流程不再擁有有效的擁有者時,流程會變成孤立的流程。 流程的建立者或擁有者離開組織且沒有共同擁有者時,通常會發生這種情況。 如果流程使用需要驗證的連線,則它可能會因為使用者身分識別不再有效而開始失敗。

系統管理員可以藉由將一或多個共同擁有者新增至流程,以維持流程自動化的商務程序持續性。 共同擁有者基本上完全控制流程,就像原始擁有者一樣,而且如果有任何連線,則可以修正連線的驗證,並在流程已停用時啟用流程。

如何檢查是否有孤立流程

注意

只有具有特殊許可權的使用者才能檢視沒有任何有效擁有者的流程。

在 Power Platform 系統管理中心的環境頁面上,移至 [資源] 索引卷標,然後開啟 [流程] 清單。 孤立的流程不會在 [擁有者] 數據行中 顯示擁有者

選取 [載入更多 ] 以載入下一組流程,以確保您已查看可能孤立的所有流程。

將新的共同擁有者指派給孤立流程

  1. 從流程清單中,選取孤立流程以開啟流程詳細數據頁面。
  2. 選取 [ 擁有者] 清單底部的 [管理共用 ]。
  3. 輸入新的擁有者名稱,然後選取新的擁有者帳戶。
  4. 選取儲存以儲存變更。

注意

如果您的組織中有大量的流程,可能很難找到孤立的流程。 在此情況下,您也可以透過PowerShell Cmdlet管理孤立流程。

透過系統管理員的Power Automate Cmdlet管理孤立流程

身為系統管理員,您也可以執行 系統管理員的 Power Apps Cmdlet 來管理流程。 如果您之前尚未完成安裝,請確定您已依照指示完成安裝。

修正一個流程的許可權

您將需要環境名稱和流程名稱(GUID)。 執行具有環境名稱和流程名稱的 Get-AdminFlowOwnerRole Cmdlet,以取得使用者及其角色的清單。 這可讓您確認流程的目前許可權集。

若要將共同擁有者指派給流程,請使用新擁有者的 Microsoft Entra 主體對象標識符來執行 Set-AdminFlowOwnerRole Cmdlet。

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

注意

您可以執行 Get-AzureADUser Cmdlet,以取得使用者的 Microsoft Entra 主體物件識別碼(也就是來自 AzureAD 模組)。 您必須先呼叫 Connect-AzureAD Cmdlet,才能執行 Get-AzureADUser Cmdlet。

注意

自 2024 年 3 月 30 日起,Azure AD 和 MSOnline PowerShell 模組已被淘汰。 若要深入了解,請閱讀淘汰更新。 在此日期之後,對這些模組的支援僅限於對 Microsoft Graph PowerShell SDK 的移轉協助和安全性修正。 淘汰的模組將繼續運作至 2025 年 3 月 30 日。

我們建議移轉至 Microsoft Graph PowerShell 以與 Microsoft Entra ID (以前稱為 Azure AD) 互動。 如需了解常見的移轉問題,請參閱移轉常見問題注意:MSOnline 1.0.x 版可能會在 2024 年 6 月 30 日之後發生中斷。

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,為沒有有效擁有者的每個流程指派共同擁有者。