Skip to content

Invoke-MgmtGraphTeamMemberAction

MgmtGraph: Manages membership actions for a Microsoft Team

#Requires -Version 5.1
#Requires -Modules Microsoft.Graph.Teams

[CmdletBinding()]
Param (
    [Parameter(Mandatory = $true, Position = 0)]
    [string]$Identity,

    [string[]]$AddMember,

    [string[]]$RemoveMember,

    [ValidateSet('owner', 'member')]
    [string]$Role = 'member'
)

Process {
    try {
        # Handle Additions
        foreach ($id in $AddMember) {
            $roles = if ($Role -eq 'owner') { @("owner") } else { @() }
            $params = @{
                'TeamId'           = $Identity
                'Roles'            = $roles
                'AdditionalProperties' = @{
                    "user@odata.bind" = "https://graph.microsoft.com/v1.0/users('$id')"
                }
                'ErrorAction'      = 'Stop'
            }
            New-MgTeamMember @params
        }

        # Handle Removals
        foreach ($mid in $RemoveMember) {
            $params = @{
                'TeamId'             = $Identity
                'ConversationMemberId' = $mid
                'ErrorAction'        = 'Stop'
            }
            Remove-MgTeamMember @params
        }

        $result = [PSCustomObject]@{
            TeamId       = $Identity
            AddedCount   = ($AddMember | Measure-Object).Count
            RemovedCount = ($RemoveMember | Measure-Object).Count
            Action       = "TeamMemberActionExecuted"
            Status       = "Success"
            Timestamp    = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
        }

        Write-Output $result
    }
    catch {
        throw
    }
}

Specifies the ID of the Team.

Optional. Specifies an array of User IDs to add to the Team.

Optional. Specifies an array of Membership IDs (not User IDs) to remove from the Team.

Optional. Specifies the role for added members. Valid values: owner, member. Default is member.

An interactive directory of PowerShell scripts.