Canvas 앱 및 흐름의 소유자 변경

동료가 캔버스 앱과 여러 Power Automate 흐름을 만들었습니다. 그러나 그/그녀는 캔버스 앱과 흐름을 공유하지 않고 조직을 떠났습니다. 시스템 관리자이더라도 퇴사한 동료가 소유한 캔버스 앱 및 흐름을 편집하거나 공유할 수 있는 권한이 없음을 알게 됩니다. 또는 Azure DevOps에서 Power Platform Build Tools를 사용하는 ALM 프로세스를 사용 중이고 배포된 캔버스 앱이 이제 DevOps 관리자의 소유인 경우. 어떤 경우이든 – 걱정하지 마세요!! Power Apps는 우리가 작업할 수 있는 여러 PowerShell 스크립트를 제공했습니다.

시작하기 전에



먼저 필요한 Power Shell 모듈을 설치해야 합니다. 따라서 관리자 모드에서 Windows PowerShell ISE를 엽니다.



Windows PowerShell ISE의 ​​스크립팅 영역에 아래 명령을 복사하여 붙여넣어 필요한 Power Shell 모듈을 설치합니다.

Install-Module Microsoft.PowerApps.Administration.PowerShell -Force Install-Module Microsoft.PowerApps.PowerShell -Force -AllowClobber Install-Module -Name AzureAD -Force


스크립트 실행 버튼을 사용하거나 키보드에서 F5 키를 눌러 명령을 실행합니다.

캔버스 앱의 소유자 변경



일단 필요한 모듈을 설치했습니다. 이제 캔버스 앱의 소유자를 변경하는 과정을 살펴보겠습니다. 소유자를 변경하려면 앱 ID와 환경 ID가 필요합니다.

환경 ID 얻기



환경 ID를 얻으려면 make.powerapps.com에 로그인하고 환경 선택기 옵션에서 환경을 선택해야 합니다. 선택한 환경으로 페이지가 로드되면 URL을 관찰합니다. 다음과 같을 것입니다: https://make.powerapps.com/environments/ 12346be2-f047-1234-1234-abcd4d0c1234/home. 환경 뒤의 GUID는 환경 ID입니다. 나중에 필요하므로 이 ID를 복사하여 저장합니다.

캔버스 앱 ID 가져오기



위에서 검색한 환경 ID를 사용하여 Windows PowerShell ISE에서 새 스크립트를 만들고 복사하여 아래 명령을 붙여넣습니다.

Add-PowerAppsAccount Get-AdminPowerApp –EnvironmentName '12346be2-f047-1234-1234-abcd4d0c1234'


F5를 사용하여 명령을 실행합니다. 명령이 완전히 실행되면 이 환경에서 생성된 모든 캔버스 앱 목록이 표시됩니다(아래 참조). 앱을 찾아 목록에 AppName으로 표시되는 앱의 GUID를 복사합니다.



캔버스 앱 소유자 변경



이제 주인을 바꿀 차례입니다. 이것은 관리 작업이므로 전역 관리자 또는 Dynamics 365 관리자여야 합니다. 권한에 대한 자세한 내용은 official MS Docs 을 참조하십시오.

Windows PowerShell ISE의 ​​새 스크립트에 아래 명령을 복사하여 붙여넣습니다. 이 명령은 자신을 앱의 소유자로 지정합니다.

Add-PowerAppsAccount Set-AdminPowerAppOwner –AppName '4321fda5-abcd-4321-12bd-1234898a4321' -AppOwner $Global:currentSession.userId –EnvironmentName '12346be2-f047-1234-1234-abcd4d0c1234'


자신이 아닌 다른 사용자에게 할당하려면 Azure에서 사용자의 개체 ID를 사용해야 합니다. Azure에서 사용자 ID를 가져오고 제공된 사용자 이메일 주소를 앱의 소유자로 추가하는 다음 명령을 실행합니다.

Connect-AzureAD #Replace this with a correct email address $emailAddress = "[email protected]"; $userID = Get-AzureADUser -ObjectID $emailAddress | Select-Object ObjectId Set-AdminPowerAppOwner –AppName '4321fda5-abcd-4321-12bd-1234898a4321' -AppOwner $userID.objectId –EnvironmentName '12346be2-f047-1234-1234-abcd4d0c1234'


Power Automate 흐름의 소유자 변경



앱 소유자가 변경된 후 이제 흐름의 소유자를 변경하는 방법을 살펴보겠습니다. 해당 사용자에게 할당된 여러 흐름이 있을 수 있으므로 해당 특정 사용자에 속한 모든 흐름을 반복하고 자신에게 다시 할당할 수 있습니다. 아래 코드 스니펫을 사용하면 그렇게 할 수 있습니다.

Add-PowerAppsAccount Connect-AzureAD #Replace this with a correct email address $previousUserEmailAddress = "[email protected]"; $previousUserID = Get-AzureADUser -ObjectID $emailAddress | Select-Object ObjectId Write-Host "Previous User Id: "$previousUserID.objectId #Replace this with your environment id $environmentName = '12346be2-f047-1234-1234-abcd4d0c1234' $flows = Get-AdminFlow –EnvironmentName $environmentName | Select-Object FlowName, DisplayName foreach($flow in $flows){ try{ $flowOwners = Get-AdminFlowOwnerRole –EnvironmentName $environmentName –FlowName $flow.FlowName | Select-Object PrincipalObjectId, RoleId foreach($flowOwner in $flowOwners){ Write-Host "Identifying: "$flow.DisplayName" | "$flow.FlowName if($flowOwner.PrincipalObjectId -eq $previousUserID.objectId){ Write-Host "Changing the owner" Set-AdminFlowOwnerRole -PrincipalType User -PrincipalObjectId $Global:currentSession.userId -RoleName CanEdit -FlowName $flow.FlowName -EnvironmentName $environmentName Remove-AdminFlowOwnerRole -RoleId $flowOwner.RoleId -FlowName $flow.FlowName -EnvironmentName $environmentName } Write-Host "---" } } catch [System.Exception]{ Write-Host $\_.Exception.Message } }


위에서 강조 표시된 행의 값을 변경해야 합니다. 그리고 $Global:currentSession.userId를 사용하는 대신 캔버스 앱에 대해 수행한 것처럼 Azure에서 모든 사용자의 개체 ID를 사용할 수 있습니다.

도움이 되었기를 바랍니다.

Power Platform Dev Newsletter를 구독하는 것을 잊지 마세요

좋은 웹페이지 즐겨찾기