Public/Add-ConnectorSyncSessionObject.ps1

function Add-ConnectorSyncSessionObject {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
        [System.Collections.Hashtable] $Object
    )

    process {
        if ($null -eq $Script:SyncSessionObjects) {
            throw "No active sync session. Please start a sync session before adding objects."
        }

        if ([String]::IsNullOrEmpty($Object.ExternalId)) {
            Write-Warning "Object must contain an 'ExternalId' key - skipping object."
            return
        }

        if ([String]::IsNullOrEmpty($Object.ObjectType)) {
            Write-Warning "Object must contain an 'ObjectType' key - skipping object."
            return
        }

        if ($null -eq $Object.Data -or $Object.Data.GetType().Name -notin "OrderedHashtable", "Hashtable") {
            Write-Warning "Object must contain a 'Data' key - skipping object."
            return
        }

        Write-Verbose "Adding object with ExternalId '$($Object.ExternalId)' and ObjectType '$($Object.ObjectType)' to sync session"
        $Script:SyncSessionObjects[$Object.ExternalId] = $Object
    }
}