src/Security/Remove-XrmUserFromTeam.ps1

<#
    .SYNOPSIS
    Remove user from a team.

    .DESCRIPTION
    Disassociate a system user from a specified team using the teammembership_association relationship.

    .PARAMETER XrmClient
    Xrm connector initialized to target instance. Use latest one by default. (Dataverse ServiceClient)

    .PARAMETER TeamReference
    Team entity reference.

    .PARAMETER UserReferences
    Array of system user entity references to remove from the team.

    .EXAMPLE
    $xrmClient = New-XrmClient -ConnectionString $connectionString;
    $teamRef = New-XrmEntityReference -LogicalName "team" -Id $teamId;
    $userRef1 = New-XrmEntityReference -LogicalName "systemuser" -Id $userId1;
    $userRef2 = New-XrmEntityReference -LogicalName "systemuser" -Id $userId2;
    Remove-XrmUserFromTeam -XrmClient $xrmClient -TeamReference $teamRef -UserReferences @($userRef1, $userRef2);
#>

function Remove-XrmUserFromTeam {
    [CmdletBinding()]    
    param
    (        
        [Parameter(Mandatory = $false, ValueFromPipeline)]
        [Microsoft.PowerPlatform.Dataverse.Client.ServiceClient]
        $XrmClient = $Global:XrmClient,

        [Parameter(Mandatory = $true)]
        [Microsoft.Xrm.Sdk.EntityReference]
        $TeamReference,

        [Parameter(Mandatory = $true)]
        [Microsoft.Xrm.Sdk.EntityReference[]]
        $UserReferences
    )
    begin {
        $StopWatch = [System.Diagnostics.Stopwatch]::StartNew();
        Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Start -Parameters ($MyInvocation.MyCommand.Parameters);       
    }    
    process {
        $collection = New-Object -TypeName "Microsoft.Xrm.Sdk.EntityReferenceCollection";
        $UserReferences | ForEach-Object {
            $collection.Add($_);
        };
        Split-XrmRecords -XrmClient $XrmClient -RecordReference $TeamReference -RecordReferences $collection -RelationShipName "teammembership_association";
    }
    end {
        $StopWatch.Stop();
        Trace-XrmFunction -Name $MyInvocation.MyCommand.Name -Stage Stop -StopWatch $StopWatch;
    }    
}

Export-ModuleMember -Function Remove-XrmUserFromTeam -Alias *;