Public/Update-CGMMGroupMembershipCloud.ps1

Function Update-CGMMGroupMembershipCloud {
    <#
    .SYNOPSIS
    Update other cloud distribution group membership with the migrated group's new cloud object.
 
    .DESCRIPTION
    Update other cloud distribution group membership with the migrated group's new cloud object.
 
    .EXAMPLE
    Update-CGMMGroupMemberShipCloud -Identity $Identity -Group $Groups
 
    Specify the identity of the staged cloud distribution group that should be added as a member of one or more cloud distribution groups.
 
    .EXAMPLE
    Get-CGMMTargetGroup $OnPremiseDLIdentity | Update-CGMMGroupMemberShipCloud -Identity $StagingGroupIdentity
 
    The Group parameter has an alias of 'MemberOfCloud' provided by the Get-CGMMTargetGroup function. If 'MemberOfCloud' has a value it can be piped into Update-CGMMGroupMemberShipCloud.
 
    .EXAMPLE
    Update-CGMMGroupMemberShipCloud -Identity $Identity -Group $Groups -BypassSecurityGroupManagerCheck
 
    Bypass the security group manager check to make membership changes to a group.
 
    .NOTES
 
    #>

    [cmdletbinding(SupportsShouldProcess)]
    param(
        # Mandatory parameters
        # No pipeline support for identity. The object that should have the group membership
        # should have the old group's identity, not the new group's which should be specified
        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]$Identity, 
        
        [Parameter(
            Mandatory = $true,
            ValueFromPipelineByPropertyName = $True
        )]
        [ValidateNotNullOrEmpty()]
        [Alias('MemberOfCloud')]
        [string[]]$Group,
        
        # Optional parameters
        [Parameter()]
        [switch]$BypassSecurityGroupManagerCheck
    )

    begin {}
    process    {
        # Check for Exchange cmdlet availability in On Prem & Exchange Online
        Try {Test-CGMMCmdletAccess -Environment Cloud -ErrorAction Stop}
        Catch {
            $PsCmdlet.ThrowTerminatingError($PSItem)
        }
        
        ForEach ($Object in $Group) {
            $AddDistributionGroupMember = @{
                Identity    = $Object
                Member      = $Identity
            }
            If ($BypassSecurityGroupManagerCheck) {$AddDistributionGroupMember.Add('BypassSecurityGroupManagerCheck',$True)}

            If ($PSCmdlet.ShouldProcess($Object,$MyInvocation.MyCommand)) {
                $EAPSaved = $Global:ErrorActionPreference
                $Global:ErrorActionPreference = 'Stop'
                Try {
                    Add-CloudCGMMDistributionGroupMember @AddDistributionGroupMember
                }
                Catch {
                    $PsCmdlet.ThrowTerminatingError($PSItem)
                }
                Finally {
                    $Global:ErrorActionPreference = $EAPSaved
                }
            }
        }
    }
    end {}
}