È possibile eseguire query su Active Directory dalla riga di comando utilizzando PowerShell o i comandi dsquery legacy.
Comandi di Active Directory di PowerShell
Elenca tutti gli utenti:
Get-ADUser -Filter *
Trova utente specifico:
Get-ADUser -Identity "username"
Cerca utente per nome:
Get-ADUser -Filter "Name -like '*John*'"
Elenca tutti i computer:
Get-ADComputer -Filter *
Elenca tutti i gruppi:
Get-ADGroup -Filter *
Ottieni informazioni sul dominio:
Get-ADDomain
Ottieni controller di dominio:
Get-ADDomainController -Filter *
Abilita il modulo AD di PowerShell
Se Get-ADUser non funziona, abilita il modulo:
Server Windows:
Import-Module ActiveDirectory
Windows 10/11: Installa RSAT (strumenti di amministrazione del server remoto) da Impostazioni > App > Funzionalità opzionali.
Quindi esegui:
Import-Module ActiveDirectory
Comandi DSQUERY legacy
Funziona senza il modulo PowerShell su macchine aggiunte al dominio.
Trova tutti gli utenti:
dsquery user
Trova utente per nome:
dsquery user -name "John*"
Trova tutti i computer:
dsquery computer
Trova tutti i gruppi:
dsquery group
Trova account disabilitati:
dsquery user -disabled
Trova computer inattivi (90 giorni):
dsquery computer -inactive 12
12 settimane = 90 giorni circa.
Ottieni informazioni utente dettagliate
PowerShell: mostra tutte le proprietà:
Get-ADUser -Identity "username" -Properties *
DSGET (legacy):
dsquery user -name "username" | dsget user -display -email -mobile
Trova le appartenenze ai gruppi dell'utente
PowerShell:
Get-ADPrincipalGroupMembership -Identity "username"
DSGET:
dsget user "CN=Username,OU=Users,DC=domain,DC=com" -memberof
Trova membri di un gruppo
PowerShell:
Get-ADGroupMember -Identity "GroupName"
DSGET:
dsget group "CN=GroupName,OU=Groups,DC=domain,DC=com" -members
Controlla se l'utente è bloccato
PowerShell:
Get-ADUser -Identity "username" -Properties LockedOut | Select-Object Name,LockedOut
Sblocca utente:
Unlock-ADAccount -Identity "username"
Reimposta password utente
Set-ADAccountPassword -Identity "username" -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "NewPassword123!" -Force)
Forza la modifica della password al prossimo accesso:
Set-ADUser -Identity "username" -ChangePasswordAtLogon $true
Cerca Computer
Per nome:
Get-ADComputer -Filter "Name -like '*DESKTOP*'"
Per sistema operativo:
Get-ADComputer -Filter "OperatingSystem -like '*Windows 11*'" -Properties OperatingSystem
Esporta risultati in CSV
PowerShell:
Get-ADUser -Filter * -Properties DisplayName,EmailAddress | Export-Csv users.csv -NoTypeInformation
Crea un file CSV con i dati dell'utente.
Filtri comuni
Utenti creati negli ultimi 30 giorni:
$date = (Get-Date).AddDays(-30)
Get-ADUser -Filter "Created -gt '$date'" -Properties Created
Utenti che non hanno mai effettuato l'accesso:
Get-ADUser -Filter "LastLogonDate -notlike '*'" -Properties LastLogonDate
Computer non connessi per 90 giorni:
$date = (Get-Date).AddDays(-90)
Get-ADComputer -Filter "LastLogonDate -lt '$date'" -Properties LastLogonDate
Risoluzione dei problemi
"Get-ADUser non riconosciuto": Importa il modulo ActiveDirectory o installa RSAT.
"Impossibile contattare il server": Non sulla rete di dominio o controller di dominio irraggiungibile.
"Accesso negato": È necessario l'amministratore del dominio o le autorizzazioni AD appropriate.
DSQUERY non restituisce nulla: Controlla la sintassi, assicurati l'appartenenza al dominio, verifica la connessione di rete.
Conclusione
PowerShell (moderno):
Get-ADUser -Filter * | Find users
Get-ADComputer -Filter * | Find computers
Get-ADGroup -Filter * | Find groups
DSQUERY (legacy):
dsquery user | Find users
dsquery computer | Find computers
dsquery group | Find groups
PowerShell è più potente ma richiede il modulo ActiveDirectory. DSQUERY funziona su computer aggiunti al dominio senza alcuna configurazione aggiuntiva.
Entrambi richiedono la connessione alla rete del dominio e le autorizzazioni appropriate.