Get-AdUser: Come Verificare gli Utenti di Active Directory con PowerShell

PowerShell è uno strumento essenziale per gli amministratori IT e facilita l’audit degli account utente di Active Directory con il comando Get-AdUser. In questa guida, dettaglieremo come iniziare con il popolare cdmdlet di Active Directory.

Introduzione al cmdlet PowerShell Get-AdUser

Il cmdlet Get-AdUser è uno dei cmdlet PowerShell di Active Directory più popolari. Consente di ottenere un oggetto utente specificato o di eseguire ricerche personalizzabili per ottenere più oggetti utente.

Pubblicità

Il parametro Identity viene utilizzato per specificare quale utente di Active Directory ottenere. Hai diverse opzioni su come identificare l’utente:

  • Puoi utilizzare il loro nome distintivo (DN), GUID, identificatore di sicurezza (SID) o nome dell’account SAM (Security Account Manager).
  • Puoi anche impostare il parametro su una variabile dell’oggetto utente come $UserA o passare un oggetto utente attraverso il pipeline al parametro Identity.

Puoi utilizzare i parametri Filter o LDAPFilter per cercare e ottenere più di un utente. Il parametro Filter utilizza il Linguaggio di Espressione di PowerShell (PSL) per interrogare Active Directory.

La sintassi del linguaggio di espressione di PowerShell offre agli amministratori un ampio supporto alla conversione dei tipi di valore accettati dal parametro Filter. Se si dispongono già di stringhe di query di Lightweight Directory Access Protocol (LDAP), utilizzare invece il parametro LDAPFilter.

Se non sono stati impostati esplicitamente parametri, Get-AdUser visualizza un set predefinito di proprietà degli oggetti utente. Per recuperare proprietà aggiuntive, utilizzare il parametro Properties. Ci occuperemo più avanti in questo articolo di alcuni dei parametri che è possibile utilizzare.

Pubblicità

Come utilizzare Get-AdUser e prerequisiti

Prima di poter utilizzare Get-AdUser e altri comandi di PowerShell correlati all’Active Directory, è necessario assicurarsi che il modulo Active Directory sia installato e caricato sul proprio computer. In base alla versione di Windows che si sta utilizzando, esistono vari metodi che è possibile seguire per installare il cmdlet.

Per questioni di concisione, descriverò i due metodi più comuni che è probabile che si segua come amministratore o professionista IT che gestisce l’Active Directory in locale.

Innanzitutto, è possibile utilizzare il seguente comando PowerShell per installare lo strumento Strumenti di amministrazione server remoti (RSAT) direttamente da Windows Update.

Add-WindowsCapability –online –Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"

Il secondo metodo consiste nell’utilizzare l’applicazione Impostazioni per installare direttamente lo strumento RSAT. Fare clic Start -> Impostazioni -> Applicazioni -> Funzionalità opzionali -> Aggiungi una funzionalità -> e spuntare l’opzione Strumenti RSAT: Servizi di dominio Active Directory e Servizi di directory leggeri.

Pubblicità

Fare clic sul pulsante Installa.

Come trovare un account utente AD utilizzando il parametro -Identità

Bene, cominciamo ad utilizzare il cmdlet e ti mostro come posso aiutarti a diventare più competente (e veloce!) per ottenere le informazioni di cui hai bisogno. Sto lavorando nel mio ambiente di laboratorio Hyper-V (Windows Server 2022 Active Directory) e sono connesso a una macchina virtuale (VM) client Windows 10 21H1. Ho cercato nel menu Start ‘Modulo Active Directory per Windows PowerShell’ e l’ho aperto tramite ‘Esegui come amministratore’.

Active Directory Module for Windows PowerShell

Innanzitutto, cerchiamo un utente di dominio basato sull’attributo sAMAccountName

Get-ADUser breinders
Finding a user account via their sAMAccountName

Ecco fatto. Ora possiamo utilizzare l’attributo objectGUID (o GUID) per trovare un utente. Proviamo:

Get-ADUser bdcaaf45-e993-4be7-83d2-c1d280edc250
Finding an account via their objectGUID (GUID)

Ah, stesso account utente. Ottimo. Possiamo anche cercare un utente in base al loro Security Identifier, o SID.

Get-ADUser S-1-5-21-3437955921-3370966048-1812589592-1107
Finding an account via their Security IDentifier (SID)

Sì, un po’ ripetitivo, ma capisci il concetto. Puoi anche utilizzare il cognome dell’utente, il nome, UserPrincipalName e altri.

Utilizzando il filtro Get-AdUser

In ambienti più grandi, non consiglierei di digitare ‘Get-AdUser’ da solo poiché inizierà a recuperare TUTTI gli oggetti utente nel dominio AD a cui sei collegato. Non solo inizierà a riempire la console di dati, ma potrebbe anche mettere una notevole pressione su qualsiasi controller di dominio che il tuo computer sta utilizzando.

Se solo potessimo filtrare l’intera base utenti e cercare utenti specifici in base ad alcune proprietà. Ebbene, è esattamente a questo che serve il parametro ‘-filter’!

Il parametro ‘-filter’ specifica una stringa di query che recupera gli oggetti AD. Questa stringa utilizza la sintassi del linguaggio dell’espressione di PowerShell (PEL). La sintassi PEL fornisce un supporto ricco alla conversione di tipi per i tipi di valore ricevuti dal parametro Filter. La sintassi utilizza una rappresentazione in ordine, il che significa che l’operatore è posizionato tra l’operando e il valore. Diamo un’occhiata ad alcuni esempi per darti un’idea migliore.

Prima, scopriamo tutti gli account che sono ‘Abilitati’.

Get-ADUser -filter {Enabled -eq "true"} | ft
Locating all the enabled accounts

Stiamo utilizzando quella deliziosa sintassi PEL per trovare tutti gli account con il campo ‘Abilitato’ uguale a True. Stiamo inoltre reindirizzando l’output utilizzando il cmdlet PowerShell Format-Table per un formato di visualizzazione più facile da leggere.

Successivamente, mostriamo tutti gli utenti con un indirizzo email.

Get-ADUser -Filter {mail -ne "null"} -Properties Name,GivenName,mail| ft Name,GivenName,mail
Finding all the user accounts with an email address

Innanzitutto, notate che stiamo utilizzando il parametro ‘-filter’ per includere solo gli account utente che non hanno un indirizzo email ‘null’. O, più semplicemente, tutti gli account con un indirizzo email. Lo so, a volte è difficile cercare di pensare come un computer.

In secondo luogo, ci stiamo concentrando sulle tre proprietà Nome, Nome, e mail (indirizzo email). Utilizziamo Format-Table e elenchiamo queste proprietà. Un gioco da ragazzi!

Potresti anche voler verificare i tuoi account dal punto di vista della sicurezza. Puoi anche utilizzare il parametro ‘-filter’ per trovare tutti gli account con l’attributo ‘passwordneverexpires’. Questo generalmente non è consigliato.

Ottieni l’utente-Ad dove il nome è simile a?

Un’altra funzionalità interessante è utilizzare vari parametri con -filter per trovare solo utenti specifici che corrispondono alle varie proprietà di un oggetto utente AD. Anche se il mio ambiente di prova è estremamente piccolo e ha solo circa dieci account utente, può comunque dimostrare la potenza e la flessibilità di poter trovare molto rapidamente gli account che si stanno cercando. Ecco, cerchiamo tutti gli utenti con ‘Reinders’ nel loro nome.

Get-ADUser -Filter {name -like "*Reinders*"} -Properties * | ft Name,EmailAddress

Stiamo usando il parametro ‘Nome’ e troviamo tutte le account che hanno ‘Reinders’ in qualche parte nel nome. Potrebbe essere il loro cognome, il loro nome o persino un secondo nome se è inserito. Se si desidera solo trovare utenti con ‘Reinders’ come ultimo nome, cambia il campo ‘come’ in “*Reinders”. (Notare, non c’è asterisco (*) alla fine del campo).

Limitare l’area di ricerca di Get-AdUser per Unità Organizzativa

Se hai un dominio/imprese relativamente grande, potresti incontrare tempi di query più lunghi quando si eseguono questi comandi o impatti di prestazioni non necessari sui tuoi controller di dominio. Parliamo di limitare l’area di ricerca di queste ricerche a una specifica Unità Organizzativa (OU).

Potremmo usare il parametro ‘-SearchBase’ e specificare una OU (o più OU) usando la seguente sintassi.

Get-ADUser -SearchBase 'OU="Test Users",DC=reinders,DC=local' -filter * -Properties Name,EmailAddress | ft Name,EmailAddress
Here, we’re limiting the search scope to the ‘Test Users’ Organization Unit (OU)

Qui, limitiamo il nostro scope a tutti gli utenti nella OU “Test Users”, quindi mostriamo il loro nome e indirizzo email in formato tabellare.

Uso di Get-AdUser con credenziali alternative

Per default, il cmdlet Get-AdUser è eseguito nel contesto dell’utente loggato attualmente. Se desideri eseguire il comando con credenziali alternative, puoi usare una variabile, memorizzare le credenziali alternative in quella variabile, quindi eseguire il comando usando il parametro ‘-Credential’.

$cred = Get-Credential Get-ADUser -Credential $cred -Filter {name -like "*Reinders*"} -Properties * | ft Name,EmailAddress

Di nuovo, semplice e diretto!

Lavorare con il parametro delle proprietà di Get-AdUser

I’ve shown a few examples of the ‘-Properties’ parameter, but let’s take a step back and explain it a bit.

Il parametro ‘-Properties’ specifica le proprietà dell’oggetto di output da recuperare dal server. Di default, se non lo si utilizza, vengono restituite e visualizzate dieci proprietà. Cose come DistinguishedName, se l’account è ‘Abilitato’ o ‘Disabilitato’, il GivenName dell’utente, Nome, GUID e altre attributi più simili a quelli di sistema. Ma ce ne sono parecchi disponibili. Utilizzare questo parametro per recuperare proprietà non incluse nell’insieme predefinito.

Specificare le proprietà per questo parametro come un elenco separato da virgole di nomi. Per visualizzare tutti gli attributi impostati sull’oggetto, specificare * (asterisco).

Per accedere a queste altre proprietà, è sufficiente specificarle; utilizzare il nome della proprietà. Per le proprietà che non sono predefinite o estese, è necessario specificare il nome visualizzato dell’attributo Lightweight Directory Access Protocol (LDAP).

Scorriamo alcuni esempi.

Get-ADUser -filter * -Properties Name,PasswordLastSet | ft Name,PasswordLastSet
Displaying all users with the date and time their password was last set/reset

Nell’esempio sopra vengono mostrati tutti gli utenti nel dominio con il loro Nome e la data/ora dell’ultima impostazione/ripristino della password.

Get-ADUser -filter * -Properties Name,whencreated | ft Name,WhenCreated
Another nice feature is listing every user’s Creation Date in Active Directory

Questo mostra quando l’account è stato creato in Active Directory. Concludiamo con una query per ottenere il Nome, il Dipartimento e il Manager di ciascun account.

Get-ADUser -filter * -Properties Name,Department,Manager | ft Name,Department,Manager
Listing the Department and the Manager of each user, if they’re populated in Active Directory

Un ultimo esempio e un ottimo utilizzo del comando Esporta-Csv. Se avessi bisogno di ottenere un elenco di tutti gli utenti in un dominio e includere tutte le proprietà, esegui questo comando per esportare tutto in un comodo file CSV.

Get-ADUser -filter * -properties * | Export-CSV c:\temp\Users.csv

Riepilogo

I hope you gained some knowledge about how to use the Get-AdUser PowerShell command. This really scratches the surface, however, this is one aspect I like about the power of PowerShell: Learning about the core properties of a cmdlet and extrapolating it out to your organization.

Spesso è sorprendentemente facile pensare a molti casi d’uso in cui puoi utilizzare questo comando per risolvere un problema, creare della documentazione per altri ingegneri e aiutare con i processi di risoluzione dei problemi. Può tornare molto utile. E ovviamente, utilizzare alcuni di questi comandi per generare uno script PowerShell… aumenta sempre l’efficienza!

Sentiti libero di lasciare eventuali domande o commenti di seguito.

Articolo correlato:

Source:
https://petri.com/get-aduser-how-to-audit-active-directory-users-with-powershell/