Nous allons voir dans cet article les commandes pour interroger l'Active Directory. Les trois commandes de bases sont Get-ADUser, Get-ADGroup et Get-ADComputer. Ces commandes vont nous permettre de récupérer des informations sur les utilisateurs, les groupes et les ordinateurs enregistré dans l'Active Directory.
Pour commencer il faut tout d'abord importer les commandes dans notre environnement PowerShell :
Import-Module ActiveDirectory
Les commandes suivantes nous permettent de récupérer l'ensemble des objets de l'AD :
Get-ADUser -Filter * | Out-GridView
Get-ADGroup -Filter * | Out-GridView
Get-ADComputer -Filter * | Out-GridView
Get-ADGroup -Filter * | Out-GridView
Get-ADComputer -Filter * | Out-GridView
Le paramètre -Filter * indique à la commande que nous voulons récupérer tout les objets. Pour voir un objet en particulier nous allons utiliser un filtre plus détaillé :
Get-ADUser -Filter {SamAccountName -like 'Sekki'}
Get-ADGroup -Filter {SamAccountName -like 'Tribuns'}
Get-ADComputer -Filter {Name -like 'Yukine'}
Get-ADGroup -Filter {SamAccountName -like 'Tribuns'}
Get-ADComputer -Filter {Name -like 'Yukine'}
Par défaut, nous ne voyons qu'une petite partie des propriétés des objets. Pour afficher la totalité des paramètres nous allons utiliser les commandes suivantes :
Get-ADUser -Filter {SamAccountName -like 'Sekki'} -Properties *
Get-ADGroup -Filter {SamAccountName -like 'Tribuns'} -Properties *
Get-ADComputer -Filter {Name -like 'Yukine'} -Properties *
Get-ADGroup -Filter {SamAccountName -like 'Tribuns'} -Properties *
Get-ADComputer -Filter {Name -like 'Yukine'} -Properties *
Cette fois nous pouvons voir tout les propriétés des objets, et il y en a beaucoup. Nous allons donc faire maintenant une sélection :
Get-ADUser -Filter * -Properties SamAccountName,Enabled,LockedOut,LastLogondate | Out-GridView
Get-ADGroup -Filter * -Properties SamAccountName,GroupCategory,GroupScope | Out-GridView
Get-ADComputer -Filter * -Properties Name,Enabled,Created,LastLogonDate,Location | Out-GridView
Si le domain à interroger n'est pas le domain courant, on utilise l'option -Server pour spécifier le nom du domain :
Get-ADUser -Filter * -Server "Sekki.fr" -Properties SamAccountName,Enabled,LockedOut | Out-GridView
Nous allons voir maintenant quelques cas classique. En premier comment récupérer les groupes d'un utilisateur :
$groups = Get-ADUser -Filter {Name -like 'yukine'} -Properties *
foreach($group in $groups)
{
$group = (($group.split(","))[0]) -replace("CN=","") #Nettoyage.
Write-Host $group
}
foreach($group in $groups)
{
$group = (($group.split(","))[0]) -replace("CN=","") #Nettoyage.
Write-Host $group
}
Les commandes qui permettent le lister les membres d'un groupe :
$members = (Get-ADGroup -Filter {Name -like 'Tribuns'} -Properties *).Members
foreach($member in $members)
{
$member = (($member.split(","))[0]) -replace("CN=","") #Nettoyage.
Write-Host $member
}
foreach($member in $members)
{
$member = (($member.split(","))[0]) -replace("CN=","") #Nettoyage.
Write-Host $member
}
(Get-ADGroupMember -Identity "Tribuns").SamAccountName
Pour finir cette commande permet de récupérer les comptes inutilisés depuis 6 mois.
$date = (Get-Date).AddDays(-180)
Get-ADUser -Filter {LastLogonDate -lt $date} -Properties Enabled,LockedOut,DisplayName,SamAccountName,LastLogonDate | Out-GridView
Get-ADUser -Filter {LastLogonDate -lt $date} -Properties Enabled,LockedOut,DisplayName,SamAccountName,LastLogonDate | Out-GridView