manifests/collectors/Management/PolicyAssignments.psd1

#
# AUTHORED AS DATA (AB#6782, Story AB#6779). There is no source collector script to drift from.
#
# Renders the policy assignments src/collect/Get-ScoutGovernanceDataset.ps1 already collects, on
# an AZSC/Governance/PolicyAssignment envelope flattened by
# src/collect/ConvertTo-ScoutGovernanceResource.ps1.
#
# Distinct from Management/PolicyDefinitions (what policies EXIST) and
# Management/PolicyComplianceStates (what the estate scored). This one answers which policies are
# actually applied, and where.
#
@{
    ResourceTypes = @(
        'AZSC/Governance/PolicyAssignment'
    )

    ResourceTypeMatching = 'Grouped'

    AdditionalFilter = $null

    FilterPreamble = ''

    RowLoopVariable = '1'

    RowSource = @{
        Expression = @'
foreach ($envelope in @($Resources | Where-Object { $_.TYPE -eq 'AZSC/Governance/PolicyAssignment' })) {
        @($envelope.PROPERTIES)
    }
'@

    }

    Preamble = @'
$ResUCount = 1
'@


    AdditionalRowLoops = @()

    TagLoop = $null

    Fields = @(
        @{
            Name = 'Subscription'
            Expression = 'Get-AZSCSafeProperty -InputObject $1 -Path ''Subscription'''
        }
        @{
            Name = 'Scope Type'
            Expression = 'Get-AZSCSafeProperty -InputObject $1 -Path ''Scope Type'''
        }
        @{
            Name = 'Scope'
            Expression = 'Get-AZSCSafeProperty -InputObject $1 -Path ''Scope'''
        }
        @{
            Name = 'Assignment Name'
            Expression = 'Get-AZSCSafeProperty -InputObject $1 -Path ''Assignment Name'''
        }
        @{
            Name = 'Display Name'
            Expression = 'Get-AZSCSafeProperty -InputObject $1 -Path ''Display Name'''
        }
        @{
            Name = 'Assigned'
            Expression = 'Get-AZSCSafeProperty -InputObject $1 -Path ''Assigned'''
        }
        @{
            Name = 'Definition'
            Expression = 'Get-AZSCSafeProperty -InputObject $1 -Path ''Definition'''
        }
        @{
            Name = 'Enforcement Mode'
            Expression = 'Get-AZSCSafeProperty -InputObject $1 -Path ''Enforcement Mode'''
        }
        @{
            Name = 'Excluded Scopes'
            Expression = 'Get-AZSCSafeProperty -InputObject $1 -Path ''Excluded Scopes'''
        }
        @{
            Name = 'Parameters'
            Expression = 'Get-AZSCSafeProperty -InputObject $1 -Path ''Parameters'''
        }
        @{
            Name = 'Description'
            Expression = 'Get-AZSCSafeProperty -InputObject $1 -Path ''Description'''
        }
        @{
            Name = 'Definition ID'
            Expression = 'Get-AZSCSafeProperty -InputObject $1 -Path ''Definition ID'''
        }
        @{
            Name = 'ID'
            Expression = 'Get-AZSCSafeProperty -InputObject $1 -Path ''ID'''
        }
        @{
            Name = 'Resource U'
            Expression = '$ResUCount'
        }
    )

    Export = @{
        WorksheetName = 'Policy Assignments'
        TableNamePrefix = 'PolicyAssignmentsTable_'
        Columns = @(
            'Subscription'
            'Scope Type'
            'Scope'
            'Assignment Name'
            'Display Name'
            'Assigned'
            'Definition'
            'Enforcement Mode'
            'Excluded Scopes'
            'Parameters'
            'Description'
            'Resource U'
        )
        TagColumns = @()
        TagColumnsBefore = $null
        NumberFormat = '0'
        ConditionalText = @()
    }
}