A popular use of PowerShell is working with Active Directory Directory Services (AD). There are so many time-saving things PowerShell can do with AD objects. Using the PowerShell Get-ADGroupMember
cmdlet and other cmdlets can save you a ton of time.
I gruppi di Active Directory sono un ottimo modo per suddividere gli account degli utenti. I gruppi consentono agli amministratori di definire l’accesso alle risorse su molti sistemi.
In questo articolo, utilizziamo PowerShell per ottenere i membri del gruppo AD ed esportare i membri del gruppo AD. È quindi possibile utilizzare queste informazioni per generare molti report interessanti.

Gestisci e reporta Active Directory, Exchange e Microsoft 365 con ManageEngine ADManager Plus. Scarica la prova gratuita!
Prerequisiti
Se desideri seguire questo articolo, assicurati di avere i seguenti requisiti pronti:
- Lavorare su un computer con Windows 10, associato a un dominio
- Accedere con un utente che può leggere i gruppi AD e gli account degli utenti
- Avere installato il modulo di Active Directory di PowerShell
Apprendere le basi
Per interrogare i gruppi AD e i membri del gruppo, hai a disposizione due cmdlet di PowerShell – Get-AdGroup
e Get-AdGroupMember
.
Get-ADGroup
interroga un controller di dominio e restituisce gli oggetti di gruppo AD. Get-AdGroupMember
guarda all’interno di ogni gruppo e restituisce tutti gli account utente, gruppi, contatti e altri oggetti che esistono in quel gruppo.
Ottenere i gruppi AD
Per trovare i gruppi AD con PowerShell, è possibile utilizzare il cmdlet Get-ADGroup
. Senza parametri, Get-ADGroup
interrogherà AD e restituirà tutti i gruppi in un dominio utilizzando il parametro Filter
. Il parametro Filter
è obbligatorio. Esiste per limitare i gruppi restituiti in base a vari criteri.
Ad esempio, per trovare tutti i gruppi senza considerare alcun criterio, utilizzare Get-ADGroup
e specificare un carattere jolly (asterisco) per il parametro Filter
. Potete vedere un esempio di seguito. Scorrere tutti questi gruppi potrebbe richiedere del tempo se avete centinaia o anche migliaia nel vostro dominio.
Se avete bisogno di trovare un singolo gruppo, potete utilizzare il parametro Identity
.
Il parametro Identity
è un parametro comune tra tutti i cmdlet di PowerShell di Active Directory. Vi consente di limitare la vostra query a un singolo oggetto AD. Ad esempio, se avete bisogno di verificare se esiste un gruppo chiamato HR, potete scoprirlo eseguendo il comando di seguito.
Ottenere i membri del gruppo AD con Get-AdGroupMember
Utilizzare PowerShell per elencare i membri di un gruppo AD richiede il cmdlet Get-ADGroupMember
. Questo cmdlet restituisce oggetti utente, gruppo e computer all’interno di un gruppo specifico. Forse hai bisogno di trovare tutti i membri del gruppo Amministratori. Nel suo formato più semplice, useresti semplicemente il parametro Identity
specificando il nome del gruppo come segue.
Nota che
Get-AdGroupMember
restituisce solo l’appartenenza a gruppi per utenti, gruppi e computer. Non restituirà altri oggetti AD come i contatti.
Enumerazione dei membri del gruppo all’interno dei membri del gruppo
Come forse sai, i gruppi AD possono contenere non solo account utente, ma anche altri gruppi, chiamati annidamento. Quando un gruppo è annidato all’interno di un altro gruppo, i membri di quello gruppo ereditano le stesse autorizzazioni assegnate al gruppo principale.
Per impostazione predefinita, il cmdlet PowerShell Get-AdGroupMember
non restituisce i membri dei gruppi annidati. Per risolvere questo problema, puoi utilizzare il parametro Recursive
. Ad esempio, potresti trovare i membri di gruppi annidati all’interno del gruppo HR utilizzando il parametro Recursive
come mostrato di seguito.
Ottenere più gruppi/membri contemporaneamente
Se hai bisogno di interrogare AD per molti gruppi diversi o membri di gruppi contemporaneamente, puoi farlo anche usando un ciclo PowerShell foreach. Un ciclo foreach esegue un comando o un codice per ogni elemento in una raccolta. In questo caso, quella raccolta sarà una lista di nomi di gruppo.
Forse hai bisogno di trovare tutti i membri del gruppo HR, Contabilità e IT. Per farlo, dovresti prima creare una raccolta o un array di questi nomi di gruppo. Nell’esempio sottostante viene definita questa raccolta come $groupNames
. Quindi, per ogni nome in quella raccolta, esegui Get-ADGroupMember
fornendo il nome di ogni gruppo al parametro Identity
.
Potresti anche utilizzare il cmdlet
ForEach-Object
per iterare sui gruppi.
Utilizzo di credenziali alternative
Come molti altri cmdlet di PowerShell, i cmdlet dei gruppi AD hanno un parametro Credential
. Per impostazione predefinita, ogni volta che esegui un cmdlet dei gruppi AD, vengono utilizzate le tue credenziali di accesso per interrogare Active Directory. Questo comportamento richiede di essere su un computer connesso al dominio e connesso come utente di Active Directory che ha le autorizzazioni necessarie.
Ma cosa succede se sei su un computer di gruppo di lavoro o è necessario autenticarsi ad AD come utente diverso? In tal caso, è possibile utilizzare il parametro Credential
. Questo parametro consente di specificare un nome utente e una password da utilizzare per l’autenticazione.
Ad esempio, supponiamo che il tuo account utente non abbia i diritti per eseguire un’operazione su AD. Hai un account di servizio con diritti aggiuntivi. Puoi essere connesso come utente standard e autenticarti con l’account di servizio come mostrato di seguito.
Il cmdlet Get-Credential
richiede un nome utente/password per creare un credenziale. Questa credenziale viene quindi passata al cmdlet Get-AdGroup
per l’autenticazione.
Il parametro
Credential
è onnipresente in PowerShell per fornire credenziali di autenticazione. Per ulteriori informazioni, leggi Utilizzo del cmdlet PowerShell Get-Credential e tutte le cose relative alle credenziali.
Ottieni i membri del gruppo con Get-ADGroup?
Può sembrare controintuitivo, ma è possibile ottenere i membri di un gruppo anche con il cmdlet Get-ADGroup
.
Risulta che Get-ADGroup
restituisce una proprietà per ogni gruppo chiamata members
. Questa è una collezione di oggetti AD che sono membri di un gruppo.
Ad esempio, per trovare i membri del gruppo HR senza utilizzare Get-ADGroupMember
, è possibile fare qualcosa del genere:
Perché utilizzare questo metodo rispetto agli altri? La differenza principale è che la proprietà members
contiene tutti i tipi di oggetti AD – non solo utenti, computer e altri gruppi.
Forse hai contatti all’interno di vari gruppi. Quando esegui Get-ADGroupMember
, quei contatti non verranno visualizzati. Ma se dici a Get-ADGroup
di restituire tutti i membri di quel gruppo insieme all’espansione di quella collezione come mostrato di seguito, vedrai i contatti.
Trovare attributi AD specifici
Nella sezione di base sopra, hai semplicemente restituito tutti i gruppi e i membri dei gruppi. Le informazioni restituite per ogni gruppo e membro del gruppo sono solo una parte delle attributi AD associate a ciascun tipo di oggetto.
Forse vuoi vedere l’indirizzo email di un account utente, la data dell’ultimo accesso o un altro attributo AD associato? Per fare questo, dovrai essere creativo.
Forse sei riuscito a trovare tutti i membri del gruppo HR ma hai bisogno anche di vedere l’indirizzo email di ogni account utente?
Filtrare i risultati
Fino a questo punto, hai trovato tutti i gruppi e i membri del gruppo, ma in un ambiente di lavoro quotidiano, raramente avrai bisogno di farlo. Probabilmente avrai bisogno di trovare solo un numero limitato di ogni elemento. I cmdlet dei gruppi AD offrono alcuni modi per gestire questo.
Il parametro Filter
Come accennato in precedenza, entrambi i cmdlet hanno il parametro Filter
. Questo parametro ti consente di limitare ciò che viene restituito in molti modi diversi al di fuori del campo di questo articolo.
Utilizzando il parametro Filtro
, è possibile limitare i risultati in base a qualsiasi attributo AD, come il nome, il tipo di gruppo, l’indirizzo email, l’ultimo accesso per gli utenti, ecc.
Ad esempio, forse desideri trovare solo gruppi di sicurezza. In tal caso, specificheresti un attributo GroupCategory
e imposti una condizione per assicurare che vengano restituiti solo gruppi di Sicurezza
.
Forse desideri trovare tutti i gruppi di sicurezza, ma che non siano gruppi locali del dominio. Aggiungeresti quindi un’altra condizione (questa volta utilizzando l’operatore -ne
) per evitare che vengano restituiti gruppi locali del dominio.
Se desideri imparare come creare filtri di query, assicurati di dare un’occhiata a Learning Active Directory and LDAP Filters in PowerShell.
Limitare i risultati dei gruppi per unità organizzative (OU)
Forse hai vari gruppi nidificati in OU. Non desideri necessariamente trovare tutti i gruppi, ma solo i gruppi in una specifica OU. In tal caso, puoi utilizzare il parametro SearchBase
.
Il parametro SearchBase
ti consente di specificare il nome distinto (DN) di un’OU per iniziare a cercare gruppi. Ad esempio, forse hai un’OU chiamata Locations alla radice del tuo dominio. Nell’OU Locations, hai creato un’OU per ogni posizione come Austin, NYC e Los Angeles. Stai cercando solo gruppi nell’OU NYC e hai bisogno di limitare la visualizzazione degli altri.
Di seguito è mostrata un esempio di struttura OU AD. Nota che esistono altri gruppi al di fuori delle OU Locations.
Forse è necessario trovare tutti i gruppi AD che si trovano solo nell’OU di NYC. Per limitare la query, utilizzare il parametro SearchBase
fornendo il DN come mostrato di seguito. Vengono restituiti tutti i gruppi all’interno dell’OU di Locations.
Ma ora è necessario trovare tutti i gruppi in tutti gli OU sotto l’OU di Locations. Get-ADGroup
restituisce solo i gruppi nell’OU di Locations stessa, non negli OU figli.
Per restituire i gruppi all’interno degli OU figli, è necessario utilizzare il parametro SearchScope
. Questo parametro è simile al parametro Recursive
in quanto esamina anche gli oggetti figlio.
Ad esempio, per trovare tutti i gruppi in qualsiasi OU sotto l’OU di Locations, specificare Subtree
o 2
. Questo valore per il parametro SearchScope
indica a Get-ADGroup
di cercare ricorsivamente in tutti gli OU figli, nipoti e così via.
Per una panoramica completa delle opzioni del parametro SearchScope
, fare riferimento alla documentazione di Get-ADGroup
.
Esportazione di gruppi AD e membri
Ora finalmente sai come interrogare e restituire i gruppi e i membri di gruppo necessari. Tutte queste informazioni vengono inviate alla console di PowerShell. Ma ora è necessario ottenere queste informazioni in un file CSV o in un foglio di lavoro di Excel.
L’unica cosa che devi fare ora è inviare tutte queste informazioni a un file.
Esportazione in un file CSV
Un formato popolare per esportare informazioni AD è un CSV. PowerShell dispone di un comodo cmdlet che consente di creare facilmente file CSV dall’output di PowerShell chiamato Export-Csv
.
È possibile creare un file CSV da qualsiasi comando trattato in questo articolo tramite il reindirizzamento a Export-Csv
. Utilizzando l’esempio seguente, verrà reindirizzato tutto l’output che Get-AdGroup
avrebbe restituito alla console, invece in un file CSV.
Per ulteriori informazioni su questo utile cmdlet, consulta Export-Csv: il modo di PowerShell per trattare i file CSV come cittadini di prima classe.
È anche possibile esportare facilmente i risultati in CSV tramite il cmdlet Get-AdGroupMember
.
Esportazione in Excel
PowerShell non ha un modo nativo per esportare le informazioni in Excel. Ma è possibile scaricare gratuitamente il modulo della community chiamato ImportExcel. Questo modulo porta direttamente le capacità di esportazione simili a CSV nei fogli di lavoro di Excel. Per installare il modulo di PowerShell, esegui Install-Module ImportExcel -Scope CurrentUser
.
Utilizzando l’esempio sopra, invece di un file CSV, se avessi bisogno di esportare i gruppi in un foglio di lavoro di Excel, useresti il cmdlet Export-Excel
come mostrato di seguito.
Trova password fuoriuscite e non sicure nel tuo Active Directory controllando la lista delle password del NCSC.
Il modulo ImportExcel ha molte funzionalità per lavorare con Excel. Se hai bisogno di un foglio di lavoro più sofisticato, probabilmente ha una funzione adatta a te.
Per ulteriori informazioni sull’utilizzo del modulo ImportExcel, leggi questo articolo. Fornisce un’ottima introduzione a alcuni casi d’uso comuni che può gestire.
Gestisci e genera report su Active Directory, Exchange e Microsoft 365 con ManageEngine ADManager Plus. Scarica la versione di prova gratuita!
Conclusioni
Utilizzando solo due cmdlet di PowerShell, puoi fare praticamente tutto con i gruppi di AD. Questo articolo è solo un’introduzione alle funzionalità messe a tua disposizione. Utilizza le conoscenze acquisite qui, segui alcuni dei link per approfondire gli argomenti nell’articolo e scopri cosa puoi costruire!