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:
# 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:
Get-PSRepository
oppure
Register-PSRepository -Default
Se passi attraverso un
proxy potresti avere dei problemi, prova a impostare le credenziali:
[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:
per verificare se il modulo esiste:
da un risultato simile a questo:
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Binary 2.0.0.131 azuread {Add-AzureADApplicationOwner, Add-AzureADDeviceRegisteredO...
Il passo successivo è conettersi ad
Azure AD:
questo comando visualizza la seguente schermata di login:
Azure login e stampa un risultato simile a questo:
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:
get-azureadgroup
get-azureadgroup -SearchString "APP"
get-azureadgroup -ObjectId e19bae11-4cc0-450c-bc27-6dae8f3da61b
mentre per vedere i membri uso il comando
Get-AzureADGroupMember:
$g = get-azureadgroup -ObjectId e19bae11-4cc0-450c-bc27-6dae8f3da61b
$g | Get-AzureADGroupMember
ritorna:
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':
Add-AzureADGroupMember -ObjectId <idDelGruppo> -RefObjectId <idDellOggettoDaAggiungere>
ad esempio:
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:
# 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.