如何在擁有者離開組織時管理孤立流程
本文說明如何在擁有者離開組織時管理孤立流程。
適用於: Power Automate
原始 KB 編號: 4556130
什麼是孤立流程?
當流程不再擁有有效的擁有者時,流程會變成孤立的流程。 流程的建立者或擁有者離開組織且沒有共同擁有者時,通常會發生這種情況。 如果流程使用需要驗證的連線,則它可能會因為使用者身分識別不再有效而開始失敗。
系統管理員可以藉由將一或多個共同擁有者新增至流程,以維持流程自動化的商務程序持續性。 共同擁有者基本上完全控制流程,就像原始擁有者一樣,而且如果有任何連線,則可以修正連線的驗證,並在流程已停用時啟用流程。
如何檢查是否有孤立流程
注意
只有具有特殊許可權的使用者才能檢視沒有任何有效擁有者的流程。
在 Power Platform 系統管理中心的環境頁面上,移至 [資源] 索引卷標,然後開啟 [流程] 清單。 孤立的流程不會在 [擁有者] 數據行中 顯示擁有者 。
選取 [載入更多 ] 以載入下一組流程,以確保您已查看可能孤立的所有流程。
將新的共同擁有者指派給孤立流程
- 從流程清單中,選取孤立流程以開啟流程詳細數據頁面。
- 選取 [ 擁有者] 清單底部的 [管理共用 ]。
- 輸入新的擁有者名稱,然後選取新的擁有者帳戶。
- 選取儲存以儲存變更。
注意
如果您的組織中有大量的流程,可能很難找到孤立的流程。 在此情況下,您也可以透過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,為沒有有效擁有者的每個流程指派共同擁有者。