Bulk Remove Members

Use PowerShell to remove members from Teams.

# Define the log file path
$logFile = "Remove-Teams-logfile.log"

# Function to write to log file
function Write-Log {
    param (
        [string]$message
    )
    $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    Add-Content -Path $logFile -Value "$timestamp - $message"
}

# Start logging
Write-Log "Script started."

# Import the CSV file
$teams = Import-Csv -Path "Teams-Revert.csv"

# Get all teams once at the beginning
try {
    $allTeams = Get-Team
    Write-Log "Retrieved all teams successfully."
    Write-Output "Retrieved all teams successfully."
} catch {
    Write-Log "Failed to retrieve teams: $_"
    throw $_
    Write-Output "Failed to retrieve teams: $_"
}

foreach ($team in $teams) {
    # Extract team details
    $displayName = $team.DisplayName
    $mailNickname = $team.MailNickname
    $removeOwners = $team.RemoveOwners -split ";"
    $removeMembers = $team.RemoveMembers -split ";"

    # Find the GroupId using the pre-fetched list of teams
    $group = $allTeams | Where-Object { $_.DisplayName -eq $displayName -and $_.MailNickname -eq $mailNickname }

    if ($null -ne $group) {
        $groupId = $group.GroupId

        # Remove Owners
        foreach ($removeOwner in $removeOwners) {
            if ($removeOwner -ne "") {
                try {
                    Remove-TeamUser -GroupId $groupId -User $removeOwner -Role Owner
                    Write-Log "Removed $removeOwner as owner from team $displayName"
                    Write-Output "Removed $removeOwner as owner from team $displayName"
                } catch {
                    Write-Log "Failed to remove $removeOwner as owner from team ${displayName}: $_"
                    Write-Output "Failed to remove $removeOwner as owner from team ${displayName}: $_"
                }
            }
        }

        # Remove Members
        foreach ($removeMember in $removeMembers) {
            if ($removeMember -ne "") {
                try {
                    Remove-TeamUser -GroupId $groupId -User $removeMember -Role Member
                    Write-Log "Removed $removeMember as member from team $displayName"
                    Write-Output "Removed $removeMember as member from team $displayName"
                } catch {
                    Write-Log "Failed to remove $removeMember as member from team ${displayName}: $_"
                    Write-Output "Failed to remove $removeMember as member from team ${displayName}: $_"
                }
            }
        }
    } else {
        Write-Log "Team with DisplayName '$displayName' and MailNickname '$mailNickname' not found."
        Write-Output "Team with DisplayName '$displayName' and MailNickname '$mailNickname' not found."
    }
}

Write-Log "Removing members and owners completed."
Write-Log "Script ended."
Write-Output "Removing members and owners completed."
Write-Output "Script ended."