TUTOS.EU

PowerShell - Lister les comptes de l'AD

Comment extraire la liste des comptes de l'active directory

Code super basique ultra simple

Get-ADUser -Filter *
Lien vers le fichier : cliquez ici Copier le code

Les propriétés

Get-ADUser -Filter * | Select-Object -first 1 | gm
Lien vers le fichier : cliquez ici Copier le code

Afficher les comptes AD triés par nom

Get-ADUser -Filter * | select Name, UserPrincipalName, SamAccountName, DistinguishedName | sort-object -property Name
Lien vers le fichier : cliquez ici Copier le code

Pour afficher des champs non présents de base, il faut les déclarer dans l'option Properties.
Exemple avec l'email

Get-ADUser -Filter *  -Properties Name, UserPrincipalName, SamAccountName, EmailAddress, DistinguishedName | select Name, UserPrincipalName, SamAccountName, EmailAddress, DistinguishedName | sort-object -property Name
Lien vers le fichier : cliquez ici Copier le code

Pour filtrer les résultats sur une valeur de champ, comme ici sur les comptes ayant un email contenant 'tech'

Get-ADUser -Filter * -Properties Name, UserPrincipalName, SamAccountName, EmailAddress, DistinguishedName | Where-Object {$_.EmailAddress -match "tech"} | select Name, UserPrincipalName, SamAccountName, EmailAddress, DistinguishedName | sort-object -property Name
Lien vers le fichier : cliquez ici Copier le code

La méthode présentée a ici l'avantage d'être rapide

#$objdomain = New-Object -TypeName System.DirectoryServices.DirectoryEntry -ArgumentList ("LDAP://DC=mydomain,DC=local")
$objdomain = [ADSI]''

try{
	
    $objSearcher = New-Object System.DirectoryServices.DirectorySearcher($objDomain)
	
	#Si vous voulez filtrer c'est ici
    #$objSearcher.Filter = '(objectCategory=organizationalUnit)'
	$objSearcher.Filter = '(objectClass=user)'
	$OU = $objSearcher.FindAll()
	
	foreach ($UneLigne in $OU){
		Write-Host $UneLigne.path
	}
}catch{
	[string]$logerr = $script:today2 + ";" + $_.Exception.Message + "`r`n"
	Write-Host "Erreur $logerr"
}
Lien vers le fichier : cliquez ici Copier le code

En voici une autre

#$objdomain = New-Object -TypeName System.DirectoryServices.DirectoryEntry -ArgumentList ("LDAP://DC=mydomain,DC=local")
$objdomain = [ADSI]''

try{
	
    $Properties =
    @(
     'DisplayName',
     'SamAccountName',
     'DistinguishedName'
    )

    #$MesUsers = Get-ADUser -Filter * -SearchBase "OU=monOU,DC=mydomain,DC=local" -Properties *
    $MesUsers = Get-ADUser -Filter * -SearchBase "OU=monOU,DC=mydomain,DC=local" -Properties $Properties

	
	foreach ($UneLigne in $MesUsers){
		Write-Host "$($UneLigne.displayName)`t$($UneLigne.DistinguishedName)"
		#$UneLigne | gm
		#break
	}
}catch{
	[string]$logerr = $script:today2 + ";" + $_.Exception.Message + "`r`n"
	Write-Host "Erreur $logerr"
}
Lien vers le fichier : cliquez ici Copier le code

Pages Web

Site WebDescription
ss64.comActive Directory module PowerShell cmdlets
ss64.comGet-ADUser

2