Gestire l’appartenenza ai gruppi di Office 365 con PowerShell

Volete gruppi dinamici senza pagare per una licenza Azure Active Directory Premium? Vediamo come…

Non ci stancheremo mai di dirlo: la voce degli utenti è fondamentale per Microsoft!
Ed è proprio dalle loro opinioni che partono diversi progetti: in questo caso specifico, gli utenti apprezzavano moltissimo il concetto dei gruppi dinamici di Office 365 ma lamentavano il fatto di dover pagare per la licenza Azure Active Directory premium, per utilizzare la feature. Come probabilmente molti di voi ricorderanno, l’appartenenza ai gruppi dinamici è controllata da query eseguite da Azure Active Directory. Ogni account che rientra nell’ambito di applicazione di una query dev’essere licenziato.

Invece di utilizzare i gruppi dinamici, gli utenti desideravano eseguire attività schedulate in background per popolare la membership.
Questi utenti hanno quindi bisogno di una guida che indichi loro come creare uno script utile a gestire la membership dei gruppi.
In questo post, riportiamo un esempio che vi aiuta a gestire la membership dei gruppi a seconda della location di Office.
Il primo passaggio da eseguire, perciò, è raggruppare un set di mailbox con il giusto valore per l’attributo di Office ed archiviarli in una variabile PowerShell.
Per questo esempio, l’Office location è Dublino.

$Mbx = (Get-Mailbox -Filter {Office -eq “Dublin”} -ResultSize Unlimited)

È importante utilizzare il parametro Filter poichè questo forza Exchange Online a processare la query sul server e possiamo ottenere i risultati più velocemente.
Questo accade se la vostra directory è stata correttamente popolata.

 

Aggiungere Membri ad un Gruppo di Office 365

 

Per aggiornare l’appartenenza ad un Gruppo Office 365, utilizziamo il comando Add-UnifiedGroupLinks.
Il metodo più semplice è utilizzare la variabile che raccoglie il set di maiblox come input, passando il nome distinto di ogni casella di posta come link. Per testare il tutto, qui abbiamo creato un gruppo chiamato Dublin Employees ed eseguito il seguente codice per popolarne l’appartenenza.

1 Add-UnifiedGroupLinks -Identity DublinEmployees -LinkType Member -Links $Mbx.DistinguishedName

Per verificare che sia stata aggiunta la corretta appartenenza, possiamo eseguire il comando Get-UnifiedGroupLinks:

1 Get-UnifiedGroupLinks -Identity DublinEmployees -LinkType Member

 

Mantenere la Membership

 

Tutto semplice fin’ora, vediamo però come mantenere la membership.
Non dobbiamo preoccuparci delle mailbox eliminate poichè perdono l’appartenenza al gruppo nel momento in cui vengono rimosse.
In questo caso, dobbiamo aggiungere gli account dei nuovi dipendenti che corrispondono al filtro e rimuovere le persone che non hanno più la corrispondenza corretta.

Aggiungere nuovi membri è semplice ed intuitivo poichè possiamo usare gli stessi comandi per comporre un set di mailbox che combaciano ed eseguire nuovamente il comando Add-UnifiedGroupLinks. Exchange Online ignorerà le mailbox già presenti nella membership.

Le caselle che invece non hanno più corrispondenza, possono essere rimosse eseguendo il cmdlet Remove-UnifiedGroupLinks.
In ogni caso, dobbiamo capire quali membri rimuovere. Un modo per farlo è controllare l’attuale appartenenza delle mailbox che dovrebbe essere membri e rimuovere qualsiasi membro che non combacia più con i parametri.
In questo frammento di codice, creiamo una tabella hash e la popoliamo con il set di mailbox: è più semplice fare un controllo in relazione alla hash table se l’appartenenza è vasta.
A questo punto, controlliamo ogni singolo membro dell’attuale appartenenza in relazione alla tabella hash. I membri che non si trovano nella tabella, non funzioneranno nel Dublin office, quindi possiamo eliminiamoli.

1 # Remove lingering members from the group after they leave the Dublin office.
2 $Members = (Get-UnifiedGroupLinks -Identity DublinEmployees -LinkType Member | Select Alias, DistinguishedName, DisplayName)
3 $MembersHash = @{}
4 # Populate MembersHash with the current set of mailboxes from the Dublin office
5 ForEach ($M in $Mbx) {$MembersHash.Add($M.DistinguishedName, $M.Alias) }
6 # Check each member in the current membership. If they’re not in the mailbox hash table, remove them from the membership
7 ForEach ($Member in $Members) {
8 If ($MembersHash.ContainsKey($Member.DistinguishedName) -eq $False) {
9 Write-Host “Removing” $Member.DisplayName “from Dublin Employees membership”
10 Remove-UnifiedGroupLinks -Identity DublinEmployees -Linktype Member -Links $Member.Alias -Confirm:$False }
11 }

 

Rapportarsi con il proprietario del Gruppo

 

Piccola ma importante precisazione: i proprietari del Gruppo, sono anche membri ma potrebbe anche non appartenere al Dublin office.
Il comando fallirà se eseguite Remove-UnifiedGroupLinks per rimuovere un proprietario dalla lista di membri senza averlo prima rimosso dal ruolo di proprietario.
Poichè vogliamo evitare errori spiacevoli, dovremo incorporare un controllo sullo stato del proprietario prima di provare a rimuovere un membro.
Qui sotto la modifica fatta allo script:

1 # Include check for group owners before we delete a member
2 ForEach ($Member in $Members) {
3 If ($MembersHash.ContainsKey($Member.DistinguishedName) -eq $False) {
4 If ((Get-UnifiedGroupLinks -id “Dublin Employees” -LinkType Owner | Select Alias) -Match $Member.Alias) {
5 Write-Host “Can’t remove” $Member.DisplayName “as member – they are group owner.” }
6 Else {
7 Write-Host “Removing” $Member.DisplayName “from Dublin Employees membership”
8 Remove-UnifiedGroupLinks -Identity DublinEmployees -Linktype Member -Links $Member.Alias -Confirm:$False }
9 }}

Poichè Teams utilizza i gruppi di Office 365 per gestire l’appartenenza ai teams, lo stesso approccio funziona per i Teams senza che sia necessario ri-scrivere codice per usare il cmdlet all’interno del modulo Teams PowerShell.

 

 

Le informazioni presenti in questo post, sono prese dall’articolo: Managing Office 365 Group Membership with PowerShell.

 

Contattaci

La tua crescita parte da qui
Per maggiori informazioni

Contattaci

    Iscriviti alla newsletter

      Tematiche d'interesse