Como Automatizar a Desativação de Usuários no Microsoft 365 com PowerShell

Fala pessoal, tudo bem com vocês?
Hoje vamos falar sobre um processo que todo administrador de TI já passou: o desligamento de um colaborador. E eu não estou falando só de cortar o acesso ao computador, mas de todos os outros serviços que o usuário utiliza no Microsoft 365: e-mail, Teams, OneDrive, licenças e por aí vai.
Você já deve ter passado pela situação de ter que desativar um usuário no Microsoft 365 e fazer isso manualmente: bloquear login, remover licenças, configurar resposta automática, redirecionar e-mails… Tudo isso toma tempo e, na maioria das vezes, envolve alguns passos que podem ser esquecidos.
E se eu te dissesse que dá pra automatizar tudo isso com um simples script em PowerShell?
O que o script vai fazer
Aqui está a magia: com um script simples, vamos:
E, claro, gerar um log local de tudo o que foi feito
- Bloquear o login do usuário
- Remover as licenças do Microsoft 365
- Configurar a mensagem de ausência automática no Outlook
- Redirecionar os e-mails para o gestor
- Desabilitar o MFA (caso o colaborador tenha)
O Script para fazer isso
Aqui está o código que vai fazer todo o trabalho pesado:
param(
[Parameter(Mandatory)]
[string]$EmailUsuario,
[Parameter(Mandatory)]
[string]$EmailGestor
)
Connect-MgGraph -Scopes "User.ReadWrite.All", "Mail.ReadWrite", "Organization.Read.All"
Update-MgUser -UserId $EmailUsuario -AccountEnabled:$false
$usuario = Get-MgUser -UserId $EmailUsuario
$usuario.AssignedLicenses | ForEach-Object {
Set-MgUserLicense -UserId $EmailUsuario -RemoveLicenses $_.SkuId -AddLicenses @()
}
#Aqui você pode colocar uma msg de ausencia
$mensagem = "Este colaborador não faz mais parte da empresa. Em caso de urgência, contate $EmailGestor."
Set-MailboxAutoReplyConfiguration -Identity $EmailUsuario -AutoReplyState Enabled -InternalMessage $mensagem -ExternalMessage $mensagem
#Nessa parte aqui ta redirecionando para o gestor
Set-Mailbox -Identity $EmailUsuario -ForwardingSMTPAddress $EmailGestor -DeliverToMailboxAndForward $false
$authMethods = Get-MgUserAuthenticationMethod -UserId $EmailUsuario
foreach ($method in $authMethods) {
Remove-MgUserAuthenticationMethod -UserId $EmailUsuario -AuthenticationMethodId $method.Id
}
#aqui fica o log, é sempre importante guardar logs rsrs
$log = "[{0}] Usuário $EmailUsuario desativado, e-mail redirecionado para $EmailGestor" -f (Get-Date)
Add-Content -Path "C:\Temp\Log_Desativacoes.txt" -Value $log
Write-Host "Processo de desativação concluído para $EmailUsuario"
Como usar
Basta salvar o script em um arquivo .ps1
(ex: Desativar-Usuario.ps1
) e rodar com os parâmetros necessários:
.\Desativar-Usuario.ps1 -EmailUsuario "zeca@paulocostati.com.br" -EmailGestor "paulo@paulocostati.com.br"
O PowerShell vai realizar todas as etapas automaticamente. Simples assim.
E agora?
Você pode usar esse script de diversas formas:
- CSV em lote: Se tiver vários usuários para desativar, pode criar um CSV com as informações e rodar o script para todos de uma vez.
- Power Automate: Se quiser integrar com o fluxo de trabalho no Microsoft 365, pode disparar o script via Power Automate.
- Ansible: Tem um ambiente mais complexo? Dá para rodar esse PowerShell automaticamente através de Ansible.
Conclusão
E aí, gostou da ideia de automatizar esse processo? O que antes poderia ser um trabalho manual e demorado, agora pode ser feito de forma rápida e sem erro com apenas um clique.
Esse é o tipo de automação que realmente faz a diferença no dia a dia da administração de TI.