Adam the Automator (Italiano)

Un uso popolare di PowerShell è lavorare con Active Directory Directory Services (AD). Ci sono così tante cose che fanno risparmiare tempo PowerShell con gli oggetti AD. Lutilizzo di PowerShell per ottenere membri e gruppi di gruppi AD consente di risparmiare un sacco di tempo.

I gruppi di Active Directory sono un ottimo modo per segmentare gli account utente. I gruppi consentono agli amministratori di definire laccesso alle risorse su molti sistemi.

In questo articolo, utilizziamo PowerShell per ottenere membri del gruppo AD ed esportare membri del gruppo AD. È quindi possibile utilizzare queste informazioni per generare tonnellate di rapporti interessanti.

Sommario

Prerequisiti

Se desideri seguire questo articolo, assicurati di disporre dei seguenti requisiti pronti per luso:

  • Lavorare su un computer Windows 10, aggiunto a un dominio
  • Accesso effettuato con un utente in grado di leggere account utente e gruppo AD
  • Avere installato il modulo PowerShell Active Directory

Apprendimento delle nozioni di base

Per eseguire query su gruppi AD e membri del gruppo, hai a disposizione due cmdlet di PowerShell: Get-AdGroup e Get-AdGroupMember.

Get-ADGroup interroga un controller di dominio e restituisce oggetti gruppo AD. Get-AdGroupMember guarda allinterno di ogni gruppo e restituisce tutti gli account utente, i gruppi, i contatti e gli altri oggetti presenti in quel gruppo.

Recupero di gruppi AD

Per trovare gruppi AD con PowerShell, puoi 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 tener conto di alcun criterio, utilizzare Get-ADGroup e specificare un carattere jolly ( asterisco) per il parametro Filter. Puoi vedere un esempio qui sotto. Lo scorrimento di tutti questi gruppi potrebbe richiedere del tempo se nel tuo dominio sono presenti centinaia o addirittura migliaia.

Se devi trovare un singolo gruppo, puoi utilizza il parametro Identity.

Il parametro Identity è un parametro comune tra tutti i cmdlet di PowerShell di Active Directory. Ti consente di limitare la query a un singolo oggetto AD. Ad esempio, se avessi bisogno di controllare se esisteva un gruppo chiamato HR, potresti scoprirlo eseguendo il comando seguente.

Recupero dei membri del gruppo AD

Lutilizzo di PowerShell per elencare i membri del gruppo AD richiede il cmdlet Get-ADGroupMember. Questo cmdlet ottiene gli oggetti utente, gruppo e computer in un particolare gruppo. Forse devi trovare tutti i membri del gruppo Administrators. Nella sua forma più semplice, dovresti semplicemente utilizzare il parametro Identity specificando di nuovo il nome del gruppo come di seguito.

Tieni presente che Get-AdGroupMember restituisce lappartenenza al gruppo solo per utenti, gruppi e computer. Non restituirà altri oggetti AD come i contatti.

Enumerazione dei membri del gruppo allinterno dei membri del gruppo

Come forse saprai, i gruppi AD non solo può contenere account utente ma anche altri gruppi chiamati annidamenti. Quando un gruppo è nidificato allinterno di un altro gruppo, i membri di quel gruppo ereditano le stesse autorizzazioni assegnate al gruppo padre.

Per impostazione predefinita, il cmdlet Get-AdGroupMember di PowerShell non non restituisce membri del gruppo nidificati. Per rimediare, puoi utilizzare il parametro Recursive. Ad esempio, potresti trovare membri di gruppi nidificati allinterno del gruppo Risorse umane utilizzando il parametro Recursive come mostrato di seguito.

Recupero di più gruppi / membri contemporaneamente

Se è necessario interrogare AD per molti gruppi o membri di gruppi diversi contemporaneamente, è anche possibile farlo utilizzando un ciclo foreach di PowerShell. Un ciclo foreach esegue un comando o un codice per ogni elemento in una raccolta. In questo caso, la raccolta sarà un elenco di nomi di gruppi.

Forse è necessario trovare tutti i membri del gruppo nei gruppi Risorse umane, Contabilità e IT. Per farlo, devi prima creare una raccolta o un array di questi nomi di gruppi. Lesempio seguente definisce questa raccolta come $groupNames. Quindi, per ogni nome in quella raccolta, esegui Get-ADGroupMember fornendo il nome di ogni gruppo al parametro Identity.

In alternativa, puoi utilizzare il cmdlet ForEach-Object per scorrere i gruppi.

Utilizzo di credenziali alternative

Come molti altri cmdlet di PowerShell, i cmdlet del gruppo AD hanno un Credential parametro.Per impostazione predefinita, ogni volta che si esegue un cmdlet del gruppo AD, vengono utilizzate le credenziali di accesso per eseguire query in Active Directory. Questo comportamento richiede di essere su un computer appartenente a un dominio connesso come utente di Active Directory che dispone dellautorizzazione.

Ma cosa succede se sei su un computer del gruppo di lavoro o devi autenticarti ad AD come un altro utente? In tal caso, puoi utilizzare il parametro Credential. Questo parametro ti consente di specificare un nome utente e una password da utilizzare per lautenticazione.

Ad esempio, forse il tuo account utente non ha il diritto di eseguire unattività AD. Hai un account di servizio con diritti aggiuntivi. Puoi accedere come utente standard ma autenticarti con laccount di servizio come mostrato di seguito.

Il cmdlet Get-Credential richiede un nome utente / password per creare un credenziali. Questa credenziale viene quindi passata al Get-AdGroup cmdlet per lautenticazione.

Il parametro Credential è onnipresente in PowerShell per fornire le credenziali di autenticazione. Per ulteriori informazioni, leggere Utilizzo del cmdlet Get-Credential di PowerShell e tutte le credenziali.

Stai acquisendo membri del gruppo con Get-ADGroup?

Può sembrare controintuitivo, ma puoi anche ottenere membri del gruppo con il cmdlet Get-ADGroup.

Si scopre che Get-ADGroup restituisce una proprietà per ogni gruppo denominata members. Si tratta di una raccolta di oggetti AD che sono membri di un gruppo.

Ad esempio, per trovare nuovamente membri del gruppo in quel gruppo Risorse umane senza utilizzare Get-ADGroupMember, è possibile fai qualcosa del genere:

Perché usare questo metodo rispetto allaltro? La differenza principale è che le proprietà members contengono tutti i tipi di oggetti AD, non solo utenti, computer e altri gruppi.

Forse hai contatti allinterno di vari gruppi . Quando esegui Get-ADGroupMember, quei contatti non venivano visualizzati. Ma se dici a Get-ADGroup di restituire tutti i membri di quel gruppo insieme allespansione della raccolta come mostrato di seguito, vedrai i contatti.

Trovare attributi AD specifici

Nella sezione di base sopra, stavi semplicemente restituendo tutti i gruppi e i membri del gruppo. Le informazioni restituite per ogni gruppo e membro del gruppo sono solo un sottoinsieme degli attributi AD associati a ciascun tipo di oggetto.

Forse vuoi vedere lindirizzo email di un account utente, la data dellultimo accesso o un altro attributo AD associato ? Per fare ciò, devi essere creativo.

Forse sei riuscito a trovare tutti i membri del gruppo nel gruppo Risorse umane ma devi anche vedere lindirizzo email di ogni account utente?

Filtraggio dei risultati

Fino a questo punto, hai trovato tutti i gruppi e i membri del gruppo, ma in un ambiente di lavoro quotidiano, raramente hai bisogno di farlo. È probabile che dovrai trovare solo un numero limitato di ogni articolo. I cmdlet del gruppo AD hanno diversi modi per gestirlo.

Il parametro del filtro

Come accennato in precedenza, entrambi i cmdlet hanno il Filter parametro. Questo parametro ti consente di limitare ciò che viene restituito in molti modi diversi al di fuori dellambito di questo articolo.

Utilizzando il parametro Filter, puoi limitare i risultati da qualsiasi AD attributo come nome, tipo di gruppo, indirizzo email, ultimo accesso per gli utenti e così via.

Ad esempio, forse vuoi trovare solo gruppi di sicurezza. In tal caso, devi specificare un attributo GroupCategory e impostare una condizione per garantire che vengano restituiti solo Security gruppi.

Forse vuoi trovare tutti i gruppi di sicurezza ma non devono essere gruppi locali di dominio. Dovresti quindi aggiungere unaltra condizione (questa volta utilizzando loperatore -ne) per impedire la restituzione di gruppi locali di dominio.

Se desideri imparare a creare filtri di query, assicurati di controllare Apprendimento di Active Directory e filtri LDAP in PowerShell.

Limitazione dei risultati dei gruppi per unità organizzativa (OU)

Forse hai diversi gruppi nidificati nelle unità organizzative. Non vuoi necessariamente trovare tutti i gruppi ma solo i gruppi in una specifica unità organizzativa. In tal caso, puoi utilizzare il parametro SearchBase.

Il parametro SearchBase ti consente di specificare le distinte unità organizzative nome (DN) in cui iniziare a cercare i gruppi. Ad esempio, forse hai ununità organizzativa chiamata Posizioni nella radice del tuo dominio. Nellunità organizzativa delle località, sono state create tutte le unità organizzative della località come Austin, New York e Los Angeles. Stai solo cercando gruppi nellunità organizzativa di New York e devi limitare la visualizzazione degli altri.

Di seguito è mostrata una struttura di unità organizzativa AD di esempio.Si noti che esistono altri gruppi al di fuori delle unità organizzative di Locations.

Forse è necessario trovare tutti i gruppi AD che si trovano solo nellunità organizzativa di New York. Per limitare la query, dovresti utilizzare il parametro SearchBase che fornisce il DN come mostrato di seguito. Vengono restituiti tutti i gruppi allinterno delle unità organizzative di sedi.

Ma ora è necessario trovare tutti i gruppi in tutte le unità organizzative sotto lunità organizzativa di località. Get-ADGroup restituisce solo i gruppi nellunità organizzativa Locations stessa, non nelle unità organizzative secondarie.

Per restituire i gruppi allinterno delle unità organizzative secondarie, è necessario utilizzare SearchScope parametro. Questo parametro è simile al parametro Recursive in quanto ispezionerà anche gli oggetti secondari.

Ad esempio, per trovare tutti i gruppi in qualsiasi unità organizzativa sotto lunità organizzativa Posizioni, specifica Subtree o 2. Questo valore per SearchScope indica a Get-ADGroup di guardare in modo ricorsivo tutti i figli, i nipoti e le unità organizzative inferiori.

Per unanalisi completa delle SearchScope opzioni dei parametri, fai riferimento alla Get-ADGroup documentazione.

Esportazione di gruppi e membri AD

Così finalmente sai come interrogare e restituire i gruppi e i membri del gruppo di cui hai bisogno. Tutte queste informazioni vengono inviate alla console di PowerShell. Ma ora devi ottenere queste informazioni come file CSV o foglio di lavoro Excel.

Lunica cosa che devi fare ora è inviare tutte queste informazioni a un file.

Esportazione in un CSV

Un formato popolare per esportare le informazioni di AD è un CSV. PowerShell ha un pratico cmdlet che ti consente di creare facilmente file CSV dalloutput di PowerShell chiamato Export-Csv.

Puoi creare un file CSV da qualsiasi comando trattato in questo articolo collegandolo a Export-Csv. Utilizzando lesempio seguente, verrà reindirizzato tutto loutput che Get-AdGroup avrebbe restituito alla console, a un file CSV.

Per ulteriori informazioni su questo pratico cmdlet, consulta Export-Csv: The PowerShell Way to Treat CSV Files as First-Class Citizens.

Esportazione in Excel

PowerShell non dispone di un modo nativo per esportare le informazioni in Excel. Ma puoi sempre scaricare il modulo della comunità gratuito chiamato ImportExcel. Questo modulo porta le capacità di esportazione simili a CSV direttamente nei fogli di lavoro di Excel. Per installare il modulo PowerShell, eseguire Install-Module ImportExcel -Scope CurrentUser.

Utilizzando lesempio sopra, invece di un file CSV, era necessario esportare i gruppi in un foglio di lavoro Excel, è necessario utilizzare il cmdlet Export-Excel come mostrato di seguito.

Il modulo ImportExcel ha un sacco di funzionalità per funzionare con Excel. Se hai bisogno di un foglio di lavoro più elaborato, probabilmente ha una funzione per te.

Per ulteriori informazioni sullutilizzo del modulo ImportExcel, leggi questo articolo. Fornisce unottima introduzione ad alcuni casi duso comuni che è in grado di gestire.

Conclusione

Utilizzando solo due cmdlet di PowerShell, puoi farlo praticamente qualsiasi cosa con i gruppi AD. Questo articolo era solo unintroduzione alle funzionalità a tua disposizione. Usa le conoscenze raccolte qui, segui alcuni dei link per approfondimenti sullargomento nellarticolo e guarda cosa puoi costruire!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *