Private/Image/Get-ImageRequirements.ps1

function Get-ImageRequirements {
    <#
    .SYNOPSIS
        Parses an image URN and determines its Generation and Architecture requirements.
    .DESCRIPTION
        Analyzes the image URN (Publisher:Offer:Sku:Version) to determine if the image
        requires Gen1 or Gen2 VMs, and whether it needs x64 or ARM64 architecture.
        Uses pattern matching on SKU names for common Azure Marketplace images.
    #>

    param(
        [Parameter(Mandatory = $true)]
        [string]$ImageURN
    )

    $parts = $ImageURN -split ':'
    if ($parts.Count -lt 3) {
        return @{ Gen = 'Unknown'; Arch = 'Unknown'; Valid = $false; Error = "Invalid URN format" }
    }

    $publisher = $parts[0]
    $offer = $parts[1]
    $sku = $parts[2]

    # Determine Generation from SKU name patterns
    $gen = 'Gen1'  # Default to Gen1 for compatibility
    if ($sku -match '-gen2|-g2|gen2|_gen2|arm64|aarch64') {
        $gen = 'Gen2'
    }
    elseif ($sku -match '-gen1|-g1|gen1|_gen1') {
        $gen = 'Gen1'
    }
    # Some publishers use different patterns
    elseif ($offer -match 'gen2' -or $publisher -match 'gen2') {
        $gen = 'Gen2'
    }

    # Determine Architecture from SKU name patterns
    $arch = 'x64'  # Default to x64
    if ($sku -match 'arm64|aarch64') {
        $arch = 'ARM64'
    }

    return @{
        Gen       = $gen
        Arch      = $arch
        Publisher = $publisher
        Offer     = $offer
        Sku       = $sku
        Valid     = $true
    }
}