Più blocco appunti che altro, magari però chiarisce le idee e torna comodo anche ad altri. Scenario: devo popolare un gruppo Microsoft Entra partendo solo dagli indirizzi di posta elettronica degli utenti che devono farne parte.
PowerShell 7, moduli di Microsoft Graph già installati, è un passaggio obbligato.
Connettiti a Microsoft Graph e, se non sai come farlo, sbircia uno dei miei precedenti articoli.
Serve l’ID del gruppo
Per poter operare sul gruppo di Entra ti servirà il suo ID. Parti quindi da una semplice ricerca tramite filtro:
Get-MgGroup -Filter "DisplayName eq 'Nome del gruppo'" | select id
Questo ti permetterà di ottenere l’ID. Se al posto di “Nome del gruppo” inserisci il nome esatto del gruppo al quale sei interessato, allora potresti anche salvare già il suo ID all’interno di una variabile che dopo tornerà sicuramente comoda, per capirci:
$groupID = (Get-MgGroup -Filter "DisplayName eq 'Nome del gruppo'").Id
Chi c’è nel gruppo?
Se vuoi dare un’occhiata a chi popola già il gruppo (ammesso contenga almeno un membro), potrai semplicemente lanciare un:
Get-MgGroupMember -GroupId $groupID | Select -ExpandProperty AdditionalProperties
Questo ammesso tu abbia usato il suggerimento che ti avevo riportato poco sopra (quello di ottenere l’ID del gruppo tenendolo nella variabile $groupID
). Espandere le AdditionalProperties ti mostrerà diverse righe relative agli utenti del gruppo.
Puoi filtrare, ma poco e nulla a dirla tutta, a meno di non addentrarti in un ciclo nel quale usare poi il Get-MgUser
. Ti faccio due esempi pratici. Se vuoi ottenere giusto la lista di Id utente e relativo userPrincipalName, la cosa è assai fattibile:
Get-MgGroupMember -GroupId $groupID | Select Id, @{label="UserPrincipalName";expression = {$_.AdditionalProperties.userPrincipalName} }
Altrimenti, se necessiti di dati più completi e ordinati, ti basterà mettere in gioco qualche riga di codice in più (e in questo caso ho preso spunto direttamente dal lavoro di M365Corner):
$userDetails = @() $groupMembers = Get-MgGroupMember -GroupId $groupID foreach ($member in $groupMembers) { $user = Get-MgUser -UserId $member.Id -Property "id, displayName, userPrincipalName" $userDetails += [PSCustomObject]@{ Id = $user.Id DisplayName = $user.DisplayName UserPrincipalName = $user.UserPrincipalName } } $userDetails | Select-Object Id, DisplayName, UserPrincipalName
Come aggiungo gli utenti al gruppo?
Presto detto.
Se parti da una lista di indirizzi di posta elettronica (che poi è stato il mio caso d’uso partendo dallo scenario descritto in apertura articolo) si tratta di mettere in piedi un paio di istruzioni semplici:
"mario.rossi@contoso.com", "gianluca.bianchi@contoso.com", "ajeje.brazorf@contoso.com" | % { $utente = (Get-MgUser -UserId $_).id New-MgGroupMember -GroupId $groupID -DirectoryObjectId $utente }
La documentazione ufficiale Microsoft la trovi qui: learn.microsoft.com/en-us/entra/identity/users/groups-settings-v2-cmdlets, potrebbe sempre servirti (e in generale torna comoda perché viene aggiornata da Microsoft stessa). Io poi ho tratto informazioni anche da lazyadmin.nl/powershell/get-mguser e da questa “vecchia” discussione su GitHub.
In caso di errori, dubbi, boiate riportate in articolo sai già cosa fare, l’area commenti è a tua totale disposizione :-)
#KeepItSimple