Passaggio all'ora legale 31 marzo 2024 02:00 03:00 sposta avanti l'orologio di 1 ora (si dorme 1 ora in meno)
Tranite PowerShell è possibile aggiungere utenti ad un gruppo Azure AD.

Per prima cosa va installato il modulo di gestione di AzureAD Azure Active Directory V2 General Availability Module tramite il comando:
PowerShell
# privilegi amministrativi
Install-Module -Name AzureAD
Se ottieni uno di questi errori:
Archivio non attendibile
Stai installando i moduli da un archivio non attendibile. Se ritieni attendibile questo archivio, modifica il relativo
valore InstallationPolicy eseguendo il cmdlet Set-PSRepository. Vuoi installare i moduli da 'PSGallery'?
[S] Sì [T] Sì a tutti [N] No [U] No a tutti [O] Sospendi [?] Guida (il valore predefinito è "N"):
AVVISO: La versione '2.0.0.131' del modulo 'AzureAD' è già installata in 'C:\Program
Files\WindowsPowerShell\Modules\AzureAD\2.0.0.131'. Per installare la versione '2.0.2.4', esegui Install-Module e
aggiungi il parametro -Force. Questo comando installerà la versione '2.0.2.4' in modalità affiancata con la versione
'2.0.0.131'.
NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet
provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
'C:\Users\aballabio\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider by
running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install
and import the NuGet provider now?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): y
rispondi si Y alla domanda oppure esegui il comando con il parametro -Force.
Mentre se ottieni questo errore:
PackageManagement\Install-Package : No match was found for the specified search criteria and module name 'AzureAD'.
Try Get-PSRepository to see all available registered module repositories.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:1772 char:21
+ ... $null = PackageManagement\Install-Package @PSBoundParameters
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Microsoft.Power....InstallPackage:InstallPackage) [Install-Package], Ex
ception
+ FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage
prova ad eseguire, sempre con elevati privilegi, il comando:
PowerShell
Get-PSRepository
oppure
Register-PSRepository -Default
Se passi attraverso un proxy potresti avere dei problemi, prova a impostare le credenziali:
PowerShell
[System.Net.WebRequest]::DefaultWebProxy.Credentials =  [System.Net.CredentialCache]::DefaultCredentials
oppure vedi Using Azure PowerShell with Web Proxy and Fiddler.

Finita l'installazione è possibile importare il modulo:
PowerShell
import-module azuread
per verificare se il modulo esiste:
PowerShell
get-module azuread
da un risultato simile a questo:
Text
ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Binary     2.0.0.131  azuread                             {Add-AzureADApplicationOwner, Add-AzureADDeviceRegisteredO...
Il passo successivo è conettersi ad Azure AD:
PowerShell
Connect-AzureAD
questo comando visualizza la seguente schermata di login:
Azure loginAzure login
e stampa un risultato simile a questo:
Text
Account                                 Environment TenantId                   TenantDomain
-------                                 ----------- --------                   ------------
admin@xxxx.onmicrosoft.com AzureCloud   ccb44192-b5e4-4b178-81cf-53178150da5d  xxxx.onmicrosoft.com
con il comando Get-AzureAdGroup posso leggere un gruppo:
PowerShell
get-azureadgroup
get-azureadgroup  -SearchString "APP"
get-azureadgroup -ObjectId e19bae11-4cc0-450c-bc27-6dae8f3da61b
mentre per vedere i membri uso il comando Get-AzureADGroupMember:
PowerShell
$g = get-azureadgroup -ObjectId e19bae11-4cc0-450c-bc27-6dae8f3da61b
$g | Get-AzureADGroupMember
ritorna:
Text
ObjectId                              DisplayName   UserPrincipalName
--------                              -----------   -----------------
e711ea96-4de3-45a3-875f-777e6841702f  Admin         admin@xxxx.onmicrosoft.com
030d866d-ae3d-4251-9a12-23b590bf94a4  User1         user1@xxxx.onmicrosoft.com
226c562a-9414-4b9e-99ab-708c1066104d  User esterno  mail@dominio.it#EXT#@xxx.onmicrosoft.com
a questo punto per aggiungere un utente ad un gruppo si usa il comando Add-AzureADGroupMember':
PowerShell
Add-AzureADGroupMember -ObjectId <idDelGruppo> -RefObjectId <idDellOggettoDaAggiungere>
ad esempio:
PowerShell
Add-AzureADGroupMember -ObjectId 31f0ff6c-d48c-4f8a-a2e1-abca7fd399df -RefObjectId 72c14bbd-2592-40a2-935c-011f3cfeeee

Quello che segue è uno script che premette di aggiungere una serie di utenti ($userIds) ad un gruppo specifico ($groupId) visualizzando tutte le operazioni eseguite.
Sia il gruppo che gli utenti vengono referenziati tramite il loro objectId:
PowerShell
# gruppo a cui aggiungere i membri
$groupId="011D5E7A-AD04-4084-9492-7A0F2D9DF220"

# membri da aggiungere al gruppo
$userIds = @(
    "A0A4F427-9583-42A6-8FD0-0F146E63F818",
	"8DE5B1B7-D289-4E26-A076-2B849BB5C93A",
	"21BE6615-2226-4FE9-A778-83F53CFEA513"
);	#nota: rimuovere la virgola finale dall'ultimo elemento

# assicurarsi di avere installato il modulo azuread, 
# richiede privilegi amministrativi per l'installazione
# install-module azuread

# importo il modulo
import-module azuread

Write-Output "Connecting..."
Connect-AzureAD

Write-Output "Gruppo:"
get-azureadgroup -ObjectId $groupId


$usersBefore = Get-AzureADGroupMember -ObjectId $groupId 
$usersBefore | select mail, userprincipalname
Write-Output "Utenti attuali nr. $($usersBefore.count)"

Write-Output "Adding..."
$userIds | % {
    $id= $_
    Write-Output "UserId: $id"
    $u = Get-AzureADUser -ObjectId $id
    Write-Output "UPN: $($u.UserPrincipalName)"

    # verifico se l'utente esiste già   
    $found = $usersBefore | ?{$_.UserPrincipalName -eq $u.UserPrincipalName}

    if($found -eq $null){
        Write-Output "  Adding user ..."
        Add-AzureADGroupMember -ObjectId $groupId -RefObjectId $id
        Write-Output "  User ADDED"
    }else{
        Write-Output "  User EXISTS"
    }

}
Write-Output "Added"

$usersAfter = Get-AzureADGroupMember -ObjectId $groupId 
$usersAfter | select mail, userprincipalname
Write-Output "Utenti dopo aggiunta nr. $($usersAfter.count)"


Vedi anche: Azure Active Directory version 2 cmdlets for group management.
Potrebbe interessarti anche: