Site icon Gioxx.org

Graph: aggiungere membri a un gruppo Entra via PowerShell

PowerShell 7: aggiornamento da riga di comando

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

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

Condividi l'articolo con i tuoi contatti:
Exit mobile version