command/Get-AzureResourceAccessPolicies.ps1
function Get-AzureResourceAccessPolicies { param ( [Parameter(Mandatory = $true)] [string] $rootFolder ) function Get-AzureResourceAccessPolicy { <# .SYNOPSIS Function returns all Access Policies (not RBAC/IAM) for all Azure resources. .DESCRIPTION Function returns all Access Policies (not RBAC/IAM) for all Azure resources. Access Policies are the custom permission assignment not using Azure RBAC used in KeyVault, etc. .PARAMETER expandPermission Switch to expand Access Policies permissions one per an assignee. .EXAMPLE Get-AzureResourceAccessPolicy Get all Access Policies (not RBAC/IAM) for all Azure resources. #> [CmdletBinding()] param () $query = @' resources | where isnotnull(properties.accessPolicies) and array_length(properties.accessPolicies) > 0 | project id, resourceName = name, resourceType = type, location, resourceGroup, subscriptionId, properties, tags '@ Write-Verbose $query Search-AzGraph2 -query $query } $joinChar = "&" Get-AzureResourceAccessPolicy | % { $result = $_ $scopeId = $result.subscriptionId $id = $result.id -replace "/", $joinChar $outputPath = Join-Path -Path (Join-Path -Path $rootFolder -ChildPath "Subscriptions") -ChildPath $scopeId $outputFileName = Join-Path -Path $outputPath -ChildPath "$id.json" $result | select * -ExcludeProperty Id | ConvertTo-Json -depth 100 | Out-File (New-Item -Path $outputFileName -Force) } } |