Whether you're conducting a governance audit, cleaning up unused apps, or preparing to offboard a user — you need a fast way to answer this question:
"Who owns all the Power Apps and Power Automate flows in my tenant?"
Microsoft doesn't give you a clean out-of-the-box report in the admin center. So we’ll use PowerShell, the Power Platform CLI, and PnP PowerShell to generate it.
This solution will:
Perfect for IT admins, consultants, or internal platform owners — especially when you need to fix a problem quickly or prepare for a compliance review.
Run this in an elevated PowerShell window:
Install-Module -Name PnP.PowerShell -Force -AllowClobber
Download and install the Microsoft Power Platform CLI from:
After installation, make sure pac
is recognized in your terminal by running:
pac help
If you see command output, it’s installed.
Before running the script, login using:
pac auth create --kind ADMIN --url https://admin.powerplatform.microsoft.com
This will open a browser and prompt for credentials. Use an account with Power Platform Admin or Global Admin permissions.
# -------------------------------------------------------------
# Script by HarjTech | www.harjtech.com
# Purpose: List all Power Apps and Power Automate Flows in tenant
# Outputs: CSV with App/Flow name, Environment, Creator, Owners
# -------------------------------------------------------------
# Initialize output arrays
$appsReport = @()
$flowsReport = @()
# Get all environments in the tenant
$environments = pac admin list | ConvertFrom-Json
foreach ($env in $environments.environments) {
$envName = $env.name
Write-Host "Processing environment:" $envName -ForegroundColor Cyan
# Get Power Apps
$apps = pac admin powerapps list --environment $envName | ConvertFrom-Json
foreach ($app in $apps) {
$appsReport += [PSCustomObject]@{
Environment = $envName
AppName = $app.displayName
AppId = $app.appId
CreatedBy = $app.createdBy.displayName
Owners = ($app.owners | ForEach-Object { $_.displayName }) -join "; "
}
}
# Get Power Automate Flows
$flows = pac admin flow list --environment $envName | ConvertFrom-Json
foreach ($flow in $flows) {
$flowsReport += [PSCustomObject]@{
Environment = $envName
FlowName = $flow.displayName
FlowId = $flow.name
CreatedBy = $flow.creator.displayName
Owners = ($flow.ownerUsers | ForEach-Object { $_.displayName }) -join "; "
}
}
}
# Export to CSV
$appsReport | Export-Csv -Path "$env:USERPROFILE\Desktop\PowerApps_Owners_Report.csv" -NoTypeInformation -Encoding UTF8
$flowsReport | Export-Csv -Path "$env:USERPROFILE\Desktop\PowerAutomate_Owners_Report.csv" -NoTypeInformation -Encoding UTF8
Write-Host "Reports exported to desktop." -ForegroundColor Green
You’ll get two CSV files saved to your desktop:
PowerApps_Owners_Report.csv
PowerAutomate_Owners_Report.csv
Each file includes:
You can filter by environment, sort by owner, or merge with license data for further analysis.
This script is a starting point. HarjTech supports organizations with:
We help you take control of your Power Platform ecosystem — with clear visibility and automation-first strategy.
If you need quick answers about Power App or Flow ownership in your tenant, this solution gives you full visibility in minutes. Whether you're fixing a problem or preparing for governance, this tool puts the data in your hands — fast.
HarjTech builds tools like this — and implements the full governance strategies behind them.
Let us know if you’d like:
Our team is dedicated to shaping a better working world by creating long-term value for our clients, our people, and society while fostering trust in the capital markets.