Te la farò breve: ho tirato fuori l’intero elenco delle utenze Dropbox aziendali. Di solito, quando un utente va via, le sue utenze vengono disattivate su ogni servizio a questo collegato. Talvolta, però, qualcosa può sfuggire, e ho quindi deciso di mettere a confronto la lista utenze Dropbox con quella di Microsoft 365 (quest’ultimo è totalmente automatizzato: se l’utenza non esiste più in AD, allora non esisterà più su Entra, non avrà più una casella di posta elettronica, ecc.). Una base dati di cui posso fidarmi (sì, l’AD è aggiornata di continuo, è la “fonte di verità” per ciò che riguarda il mondo degli utenti).
Dimmi se la casella esiste
Il confronto viene quindi molto semplice: esiste la casella di posta elettronica? Se la risposta è no, allora molto probabilmente ho un account di Dropbox ancora attivo sul tenant, che consuma inutilmente un posto a sedere (e mi fa spendere i soldi per la licenza), e che va perciò cessato. Data una lista di indirizzi di posta elettronica (classico file CSV a singola colonna, con intestazione account, giusto per fare un esempio che mi fa da base per questo articolo), lo script di PowerShell non è poi così complicato:
$ProgressPreference = 'Continue'
$ConfirmPreference = 'None'
Import-Csv .\check_utenti.csv | % {
$email = $_.account.Trim()
Write-Progress -Activity "Loading" -Status $email
try {
$destinatario = Get-Recipient `
-Identity $email `
-ErrorAction Stop `
-WarningAction SilentlyContinue
Write-Progress -Activity "Loading" -Status $destinatario.DisplayName
}
catch {
[PSCustomObject]@{
Email = $email
Esiste = $false
Errore = $_.Exception.Message
}
}
}
Prendo l’account, per sicurezza tolgo eventuali spazi vuoti, poi riporto a video l’avanzamento (giusto per non far pensare che lo script sia rimasto inchiodato lì in attesa del nulla cosmico) e inizio a popolare un oggetto che alla fine presenterò agli occhi dell’utilizzatore, a tre colonne, riportando indirizzo e-mail analizzato, se esiste (ovviamente questa condizione sarà sempre falsa) e l’errore riscontrato sul tenant Microsoft (banalmente dovresti sempre ottenere il messaggio per casella di posta elettronica non trovata).
Nulla di più semplice, ma che ha risolto l’esigenza spicciola di non dover stare lì a confrontare centinaia di indirizzi di posta elettronica che avevo in pancia al tenant di Dropbox.
Domande? Dubbi? Tu l’avresti fatta meglio con cinquemila lire? Ne sono convinto (non fosse anche solo per le due colonne “potenzialmente inutili” riguardo la condizione di inesistenza e l’errore riscontrato sul tenant Microsoft). L’area commenti è al solito posto, usala!
Se sei proprio pignolo e vuoi sapere perché ho mantenuto quelle due colonne, è perché all’inizio avevo usato uno script un po’ più verboso:
$ProgressPreference = 'Continue'
$ConfirmPreference = 'None'
$righe = Import-Csv .\check_utenti.csv
$risultati = foreach ($riga in $righe){
$email = $riga.account.Trim()
Write-Progress -Activity "Loading" -Status $email
try {
$destinatario = Get-Recipient `
-Identity $email `
-ErrorAction Stop `
-WarningAction SilentlyContinue
[PSCustomObject]@{
Email = $email
Esiste = $true
DisplayName = $destinatario.DisplayName
Tipo = $destinatario.RecipientTypeDetails
Errore = $null
}
Write-Progress -Activity "Loading" -Status $destinatario.DisplayName
}
catch {
[PSCustomObject]@{
Email = $email
Esiste = $false
DisplayName = $null
Tipo = $null
Errore = $_.Exception.Message
}
}
}
Write-Progress `
-Activity "Verifica destinatari Exchange" `
-Completed
$risultati | Format-Table -AutoSize
Ne hai davvero bisogno? No, a meno che non ti serva una situazione davvero completa e non solo gli account da ripulire.
#KeepItSimple