Specific/Confirm-FGAccessPackagePolicy.ps1

function Confirm-FGAccessPackagePolicy {
    [alias("Confirm-AccessPackagePolicy")]
    [cmdletbinding()]
    Param
    (
        [Parameter(Mandatory = $true)]
        $Policy
    )

    $AccessPackageId = $Policy.accessPackageId
    if ($null -eq $Policy.accessPackageId) {
        throw "Policy doesn't contain accessPackageId"
    }
    
    $DisplayName = $Policy.displayName
    if ($null -eq $Policy.accessPackageId) {
        throw "Policy doesn't contain displayName"
    }

    [array]$AccessPackagesPolicies = Get-FGAccessPackagesPolicy 
    [array]$AccessPackagesPolicy = $AccessPackagesPolicies | Where-object { ($_.displayName -eq $Policy.displayName) -and ($_.accessPackageId -eq $Policy.accessPackageId) }


    if ($AccessPackagesPolicy.count -eq 1) {
        Write-Host "Confirmed AccessPackagePolicy: $DisplayName exists" -ForegroundColor Green
        Write-Host "Updating policy: $DisplayName" -ForegroundColor Yellow
        Set-AccessPackagePolicy -Policy $Policy -PolicyId $AccessPackagesPolicy.id
    }
    elseif ($AccessPackagesPolicy.count -gt 1) {
        throw "More then one policy found with DisplayName: $DisplayName"
    }
    else {
        Write-Host "Creating AccessPackagePolicy: $DisplayName" -ForegroundColor Yellow
        New-FGAccessPackagePolicy -Policy $Policy
    }

    [array]$Policies = Get-FGAccessPackagesPolicy 
    [array]$Policy = $Policies | Where-object { ($_.displayName -eq $Policy.displayName) -and ($_.accessPackageId -eq $Policy.accessPackageId) }

    Return $Policy
}