internal/functions/Get-SelectorArrays.ps1

function Get-SelectorArrays {
    <#
    .SYNOPSIS
        Extracts 'in' and 'notIn' arrays from selector objects.
     
    .DESCRIPTION
        Parses policy override or resource selector objects to extract
        the 'in' and 'notIn' array values from nested selector structures.
        Used for comparing and displaying selector changes in policy assignments.
     
    .PARAMETER SelectorObject
        The object containing selectors property (e.g., override or resourceSelector).
     
    .OUTPUTS
        Hashtable with 'In' and 'NotIn' keys containing the extracted arrays.
     
    .EXAMPLE
        $arrays = Get-SelectorArrays -SelectorObject $override
        Write-Host "In values: $($arrays.In -join ', ')"
        Write-Host "NotIn values: $($arrays.NotIn -join ', ')"
    #>

    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        $SelectorObject
    )
    
    $inValues = @()
    $notInValues = @()
    
    if ($SelectorObject.selectors) {
        foreach ($sel in $SelectorObject.selectors) {
            if ($sel.in) {
                $inValues += $sel.in
            }
            if ($sel.notIn) {
                $notInValues += $sel.notIn
            }
        }
    }
    
    @{
        In = $inValues
        NotIn = $notInValues
    }
}