I did an easy script for a case when disabled user accounts are saved during a sometime. The case was to remove this users from all membership in Microsoft Teams. An extension attribute is used for all accounts that is in this disabled state.
ExtentionAttribute7 = “Sleep”
To be able to run this script you need to import 2 modules in Azure Automation
- MicrosoftTeams
- ExchangeOnlineManagement
You will also need to create a service account with administrator roles of Microsoft Teams and Exchange Online.
#Get credantial from Azure Automation
$cred = Get-AutomationPSCredential -Name "keyvaultaccount1"
#Connect to both Exchange Online and Microsoft Teams
Connect-ExchangeOnline -Credential $cred
Connect-MicrosoftTeams -Credential $cred
#Get all users that is in the sleep state
$sleepusers = get-mailbox -filter ("customattribute7 -eq 'sleep') -ResultSize unlimited | select primarysmtpaddress
#Remove user from inactive teams
Foreach ($user in $sleepusers) {
If ((Get-Team -User $user.primarysmtpaddress) -ne $null) {
$teams = Get-Team -User $user.primarysmtpaddress
foreach ($team in $teams){
Remove-TeamUser -GroupId $team.GroupId -User $user.PrimarySmtpAddress
Write-Output "$($user.PrimarySmtpAddress) is removed from team $($team.DisplayName)"
}
Write-Output "$($user.PrimarySmtpAddress) has been removed from $($teams.Count)"}
else {
Write-Output "$($bu.PrimarySmtpAddress) is not member of a team"
}
}