Visualizzazione post con etichetta Get-ADUser. Mostra tutti i post
Visualizzazione post con etichetta Get-ADUser. Mostra tutti i post

lunedì 26 settembre 2022

PowerShell: Forzare il cambio password per tutti gli utenti appartenenti ad una UO

Per forzare la reimpostazione della password da parte degli utenti appartenenti ad una specifica UO è possibile farlo in blocco utilizzando i cmdlet Get-ADUser e Set-ADUser.
Il comando mostrato di seguito utilizza un filtro per ottenere gli utenti appartenenti all'unità organizzativa (UO) "Direzione" e, tramite pipe, per ciascun account viene impostata l'opzione Cambiamento obbligatorio password.
 Get-ADUser -Filter * -SearchScope OneLevel -SearchBase "OU=Direzione,DC=mycompany,DC=local" | Set-ADUser -ChangePasswordAtLogon $true  
Per agire anche sulle UO sottostanti basta modificare il paramentro -SearchScope passandogli il valore Subtree
 Get-ADUser -Filter * -SearchScope Subtree -SearchBase "OU=Direzione,DC=mycompany,DC=local" | Set-ADUser -ChangePasswordAtLogon $true  
PowerShell, ChangePasswordAtLogon
FIG 1 - PowerShell, ChangePasswordAtLogon

Utenti e computer di Active Directory, Cambiamento obbligatorio password
FIG 2 - Utenti e computer di Active Directory, Cambiamento obbligatorio password




martedì 9 agosto 2022

PowerShell: Ottenere un elenco di tutti gli utenti di una specifica UO

Per visualizzare l'elenco di tutti gli utenti appartenenti ad una specifica unità organizzativa è possibile utilizzare un comando PowerShell simile al seguente
Get-ADUser -Filter * -SearchBase 'ou=utenti, ou=Direzione,dc=mycompany, dc=local'
Con questo comando andiamo a visualizzare tutti gli utenti presenti nell'unità organizzativa mycompany.local/Direzione/Utenti.
Elenco utenti appartenenti all'unità organizzativa
FIG 1 - Elenco utenti appartenenti all'unità organizzativa

Possiamo creare un semplice script che esporta l'elenco degli utenti, presenti nell'unità organizzativa specificata, all'interno di un file CSV
 $OUpath = 'ou=utenti, ou=Direzione,dc=mycompany, dc=local'  
 $ExportPath = 'c:\Temp\users_in_ou.csv'  
 Get-ADUser -Filter * -SearchBase $OUpath | Select-object DistinguishedName,Name,UserPrincipalName | Export-Csv -NoType $ExportPath  



mercoledì 13 luglio 2022

PowerShell: Verificare se un account utente è disabilitato/abilitato in Active Directory

Per verificare se un account utente è abilitato o disabilitato in Active Directory è possibile utilizzare il seguente script PowerShell
 $User = Read-Host -Prompt "Inserisci il nome dell'account";    
 Get-ADUser -Filter {name -like $User -or samaccountname -like $User} | Select Name, SamAccountName, Enabled   
Verifica account
FIG 1 - Verifica account


Se si dispone di un file contenente l'elenco degli utenti da verificare è possibile utilizzare il seguente codice andando a sostituire la stringa C:\Temp\ElencoUtenti.txt con il percorso e il nome del file contenente l'elenco.
 $userList = "C:\Temp\ElencoUtenti.txt"  
 $users = Get-Content $userList  
 foreach ($user in $users){  
  Get-ADUser -Filter {name -like $user -or samaccountname -like $user} | Select Name, SamAccountName, Enabled   
 }  





venerdì 15 aprile 2022

PowerShell: Visualizzare informazioni sugli account utente e i gruppi di cui sono membri

Il cmdlet Get-ADUser permette di ottenere informazioni su uno o più account utente presenti in Active Directory. Utilizzando il cmdlet Get-ADUser, è possibile ottenere il valore di qualsiasi attributo di un account utente AD, elencare gli utenti del dominio con le relative proprietà, esportare i report sugli utenti in file CSV e utilizzare vari criteri per selezionare e filtrare gli utenti del dominio. Come vedremo negli esempi, può essere utilizzato anche per individuare a quali gruppi di AD appartiene un account utente.

Sintassi

Get-ADUser
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   -Filter <String>
   [-Properties <String[]>]
   [-ResultPageSize <Int32>]
   [-ResultSetSize <Int32>]
   [-SearchBase <String>]
   [-SearchScope <ADSearchScope>]
   [-Server <String>]
   [<CommonParameters>]


Get-ADUser
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   [-Identity] <ADUser>
   [-Partition <String>]
   [-Properties <String[]>]
   [-Server <String>]
   [<CommonParameters>]


Get-ADUser
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   -LDAPFilter <String>
   [-Properties <String[]>]
   [-ResultPageSize <Int32>]
   [-ResultSetSize <Int32>]
   [-SearchBase <String>]
   [-SearchScope <ADSearchScope>]
   [-Server <String>]
   [<CommonParameters>]

Parametri

-AuthType 
Specifica il metodo di autenticazione. I valori accettati dal parametro sono:
  • Negotiate oppure 0 (default)
  • Basic oppure 1
-Credential
Specifica le credenziali dell'account utente con cui eseguire il comando. Se omesso viene considerato l'utente corrente che sta eseguendo il comando. Al parametro può essere passato il nome dell'account, come ad es. "utente01" o "Dominio\utente01" oppure può essere passato un'oggetto PSCredential generato dal cmdlet Get-Credential. Se viene specificato un'account utente verrà richiesto di inserire la password all'esecuzione del comando.

-Filter
Specifica una stringa di query che recupera gli oggetti di Active Directory. Questa stringa usa la sintassi del linguaggio delle espressioni di PowerShell (PowerShell Expression Language syntax) che fornisce un ricco supporto alla conversione di tipo per i tipi di valore ricevuti dal parametro Filter.

-Identity
Tale parametro specifica l'oggetto gruppo Active Directory su cui si desidera intervenire. Al parametro può essere passato un qualsiasi valore che identifica il gruppo in maniera univoca come:
Distinguished name
GUID (objectGUID)
Security identifier (objectSid)
Security Account Manager account name (SAMAccountName) 

-LDAPFilter
Specifica una query LDAP che viene utilizzata per filtrare gli oggetti Active Directory. 

-Partition
A tale parametro va passato il Distinguished Name (DN) di una partizione di Active Directory. Il cmdlet utilizzerà tale partizione per ricercare l'oggetto specificato dal parametro Identity.

-Properties
Specifica le proprietà dell'oggetto da recuperare. Può essere usato per recuperare le proprietà che non sono incluse nel set di default.

-ResultPageSize
Specifica il numero di oggetti da includere in una pagina per una query AD DS (Active Directory Domain Services).

-ResultSetSize
Specifica il numero massimo di oggetti da restituire per la query AD DS (Active Directory Domain Services).

-SearchBase
Specifica un percorso Active Directory all'interno del quale effettuare la ricerca.

-SearchScope
Specifica l'ambito di una ricerca Active Directory. I valori accettabili per questo parametro sono:
  • Base o 0
  • OneLevel 1
  • SubTree o 2
-Server
Permette di specificare l'istanza di Active Directory Domain Services a cui connettersi per eseguire l'operazione.


Esempi

Esempio 1
Get-ADUser -Identity Giovanni.Lubrano -Properties *
Visualizza tutte le proprietà dell'account specificato.
Proprietà account utente
FIG 1 - Proprietà account utente

Esempio 2
Get-ADUser -LDAPFilter '(!userAccountControl:1.2.840.113556.1.4.803:=2)'
Visualizza tutti gli account utente abilitati in Active Directory utilizzando un filtro LDAP.
Utenti attivi
FIG 2 - Utenti attivi

Esempio 3
Get-ADUser -Filter {Enabled -eq “False”}
Visualizza tutti gli account utente in AD non attivi.
Account utente disabilitati
FIG 3 - Account utente disabilitati

Esempio 4
Get-ADUser Giovanni.Lubrano -Property MemberOf | Select -ExpandProperty MemberOf
Visualizza i gruppi di Active Directory di cui l'utente specificato è membro.
Gruppi AD di cui l'account è membro
FIG 4 - Gruppi AD di cui l'account è membro

Esempio 5
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires
Per ogni account utente visualizza lo stato e la data dell'ultima modifica della password e l'ora dell'ultimo accesso al dominio (attributo LastLogonTimestamp). 
Informazioni sulla password account utente
FIG 5 - Informazioni sulla password account utente

Esempio 6
Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Format-Table
Visualizza tutti gli account utente abilitati e dotati di indirizzo email.

Esempio 7
Get-ADUser -Filter * -Properties EmailAddress | where -Property EmailAddress -eq $null
Restituisce tutti gli account utente che non dispongono di indirizzo email.

Esempio 8
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | where {$_.name –like "*Giovanni*"} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:\temp\Info-user-passwords.csv -Append -Encoding UTF8
Restituisce gli attributi Name, PasswordExpired, PasswordLastSet e PasswordNeverExpires di tutti gli account utente in cui nel nome è presente la stringa Giovanni. I risultati sono ordinati per la data di ultima modifica della password (PasswordLastSet) ed esportati nel file .CSV specificato.









mercoledì 5 maggio 2021

MS Exchange: Verificare se la casella risiede "on Cloud" o "on Premises" tramite PowerShell

Un metodo veloce per verificare se una casella di posta è on cloud o on premises è quello di verificare la proprietà targetAddress relativa all'account in Active Directory. Possiamo effettuare la verifica utilizzando il cmdlet Get-AdUser a cui passare, tramite il parametro -Identity, un DN (Distinguished name), un GUID (objectGUID), un security identifier (objectSid) oppure un SAM account name (sAMAccountName).

Il comando da eseguire per verificare dove si trova la casella di posta sarà simile a
if((Get-ADUser -Identity <ADUser> -Properties targetAddress).targetAddress -match "onmicrosoft.com" ) { "On Cloud" } else { "On Prem" }

Ad es.
if((Get-ADUser -Identity GLUBRANO -Properties targetAddress).targetAddress -match "onmicrosoft.com" ) { "On Cloud" } else { "On Prem" }

Verifica mailbox
FIG 1 - Verifica mailbox




martedì 3 novembre 2020

PowerShell: Individuare e cancellare gli account utente inutilizzati presenti in Active Directory

Lo script che verrà mostrato in quest'articolo consente di ricercare, all'interno di Active Directory, tutti gli account utente non utilizzati (in base alle condizioni specificate). La ricerca viene eseguita utilizzando il cmdlet Get-ADUser. I risultati saranno salvati all'interno di un file CSV e, con una semplice modifica (assegnando alla variabile $remove_unused_account il valore $true), sarà possibile fare in modo che gli account inutilizzati trovati vengano automaticamente eliminati da Active Directory (mediante il cmdlet Remove-ADUser).

Lo script può essere scaricato dal seguente link e le istruzioni sono ampiamente documentate  dalle righe di commenti.

Account utente inutilizzati
FIG 1 - Account utente inutilizzati