Private/Processes-ADFSTkRelyingPartyTrust.ps1

function Processes-ADFSTkRelyingPartyTrust {
param (
    $sp
)

    if ((Get-ADFSRelyingPartyTrust -Identifier $sp.EntityID) -eq $null)
    {
        Write-ADFSTkVerboseLog (Get-ADFSTkLanguageText processRPEntityNotInADFS -f $sp.EntityID)
        Add-ADFSTkSPRelyingPartyTrust $sp
    }
    else
    {
        $Name = (Split-Path $sp.entityID -NoQualifier).TrimStart('/') -split '/' | select -First 1

        if ($ForceUpdate)
        {
            if ((Get-ADFSRelyingPartyTrust -Name $Name) -ne $null)
            {
                Write-ADFSTkLog (Get-ADFSTkLanguageText processRPRPAddedManualAbortingForce -f $sp.EntityID) -EntryType Warning -EventID 26
                Add-ADFSTkEntityHash -EntityID $sp.EntityID
            }
            else
            {
                Write-ADFSTkVerboseLog (Get-ADFSTkLanguageText processRPRPInADFSForcingUpdate -f $sp.EntityID)
                #Update-SPRelyingPartyTrust $_
                Write-ADFSTkVerboseLog (Get-ADFSTkLanguageText processRPDeletingRP -f $sp.EntityID)
                try
                {
                    Remove-ADFSRelyingPartyTrust -TargetIdentifier $sp.EntityID -Confirm:$false -ErrorAction Stop
                    Write-ADFSTkVerboseLog (Get-ADFSTkLanguageText processRPDeletingRPDone -f $sp.EntityID)
                    Add-ADFSTkSPRelyingPartyTrust $sp
                }
                catch
                {
                    Write-ADFSTkLog (Get-ADFSTkLanguageText processRPCouldNotDeleteRP -f $sp.EntityID, $_) -EntryType Error -EventID 27
                }
            }
        }
        else
        {
            if ($AddRemoveOnly -eq $true)
            {
                Write-ADFSTkVerboseLog (Get-ADFSTkLanguageText processRPSkippingDueToAddRemoveOnlySwitch)
            }
            elseif (Get-ADFSTkAnswer (Get-ADFSTkLanguageText processRPEntityAlreadyExistsDoUpdate -f $sp.EntityID))
            {
                if ((Get-ADFSRelyingPartyTrust -Name $Name) -ne $null)
                {
                    $Continue = Get-ADFSTkAnswer (Get-ADFSTkLanguageText processRPEntityAddedManuallyStillUpdate -f $sp.EntityID)
                }
                else
                {
                    $Continue = $true
                }

                if ($Continue)
                {
                        
                    Write-ADFSTkVerboseLog (Get-ADFSTkLanguageText processRPEntityInADFSWillUpdate -f $sp.EntityID)
                
                    #Update-SPRelyingPartyTrust $_
                    Write-ADFSTkVerboseLog (Get-ADFSTkLanguageText processRPDeletingRP -f $sp.EntityID)
                    try
                    {
                        Remove-ADFSRelyingPartyTrust -TargetIdentifier $sp.EntityID -Confirm:$false -ErrorAction Stop
                        Write-ADFSTkVerboseLog (Get-ADFSTkLanguageText processRPDeletingRPDone -f $sp.EntityID)
                        Add-ADFSTkSPRelyingPartyTrust $sp
                    }
                    catch
                    {
                        Write-ADFSTkLog (Get-ADFSTkLanguageText processRPCouldNotDeleteRP -f $sp.EntityID, $_) -EntryType Error -EventID 28
                    }
                }
            }
        }
    }
}