manifests/collectors/Identity/CrossTenantAccess.psd1

#
# GENERATED by scripts/ConvertTo-ScoutCollectorDefinition.ps1 from Modules/Public/InventoryModules/Identity/CrossTenantAccess.ps1 (AB#5660).
# Field expressions are copied verbatim from the original collector and evaluate in an
# equivalent scope -- see docs/design/decisions/declarative-collectors.md.
# Review before trusting; regenerate rather than hand-patch if the source collector changes.
#
@{
    ResourceTypes = @(
        'entra/crosstenantaccess'
    )

    ResourceTypeMatching = 'Grouped'

    AdditionalFilter = $null

    FilterPreamble = ''

    RowLoopVariable = '1'

    Preamble = @'
$ResUCount = 1
            $data = $1.properties
 
            # Extract inbound trust settings
            $inboundTrust = ''
            if ($data.inboundTrust) {
                $trustParts = @()
                if ($data.inboundTrust.isMfaAccepted) { $trustParts += 'MFA' }
                if ($data.inboundTrust.isCompliantDeviceAccepted) { $trustParts += 'CompliantDevice' }
                if ($data.inboundTrust.isHybridAzureADJoinedDeviceAccepted) { $trustParts += 'HybridAADJoined' }
                $inboundTrust = ($trustParts -join ', ')
            }
 
            # B2B Collaboration
            $b2bCollab = ''
            if ($data.b2bCollaborationInbound) {
                $b2bCollab = if ($data.b2bCollaborationInbound.applications.accessType) { $data.b2bCollaborationInbound.applications.accessType } else { 'Not Configured' }
            }
 
            # B2B Direct Connect
            $b2bDirect = ''
            if ($data.b2bDirectConnectInbound) {
                $b2bDirect = if ($data.b2bDirectConnectInbound.applications.accessType) { $data.b2bDirectConnectInbound.applications.accessType } else { 'Not Configured' }
            }
'@


    AdditionalRowLoops = @()

    TagLoop = $null

    Fields = @(
        @{
            Name = 'ID'
            Expression = '$1.id'
        }
        @{
            Name = 'Tenant ID'
            Expression = '$1.tenantId'
        }
        @{
            Name = 'Partner Tenant ID'
            Expression = '$data.tenantId'
        }
        @{
            Name = 'Display Name'
            Expression = '$1.name'
        }
        @{
            Name = 'Inbound Trust'
            Expression = '$inboundTrust'
        }
        @{
            Name = 'B2B Collaboration'
            Expression = '$b2bCollab'
        }
        @{
            Name = 'B2B Direct Connect'
            Expression = '$b2bDirect'
        }
        @{
            Name = 'Is Service Provider'
            Expression = '[bool]$data.isServiceProvider'
        }
        @{
            Name = 'Resource U'
            Expression = '$ResUCount'
        }
    )

    Export = @{
        WorksheetName = 'Cross-Tenant Access'
        TableNamePrefix = 'CTATable_'
        Columns = @(
            'Display Name'
            'Partner Tenant ID'
            'Inbound Trust'
            'B2B Collaboration'
            'B2B Direct Connect'
            'Is Service Provider'
            'Resource U'
        )
        TagColumns = @()
        TagColumnsBefore = $null
        NumberFormat = '0'
        ConditionalText = @()
    }

    SourceCollector = 'Modules/Public/InventoryModules/Identity/CrossTenantAccess.ps1'
}