Nous allons voir dans ce tutoriel comme administrer Active Directory en Powershell depuis un serveur Windows Server 2012 R2. Le Powershell est un puissant langage de script omniprésent sur les solutions Microsoft depuis Windows Server 2008.
Consultez la section Powershell Pour les Nuls pour accédez à l’index de tous les tutoriels Powershell proposés sur SysKB
Préparatif
- Lancez Powershell depuis un serveur Active Directory en cliquant sur l’icône sur la barre inférieure ou en tapant simplement “Powershell” depuis l’écran d’accueil ModernUI.
- Exécutez la commande Import-Module ActiveDirectory pour activer les commandes spécifiques à Active Directory. Lorsque vous écrirez des scripts pour automatiser vos tâches de gestion AD DS, cette commande sera la première à exécuter.
- Exécutez ensuite la commande Get-Command –Module ActiveDirectory pour lister tous les commandes associées à Active Directory. AD DS sous Windows Server 2012 R2 compte 80 commandes Powershell.
Découvrons maintenant quelques exemples de commandes Powershell pour administrer un annuaire Active Directory.
Administrer Active Directory en Powershell – Exemples
Lister tous les comptes AD
Les exemples suivants permettent d’afficher tous les comptes de votre annuaire. Le premier va afficher quelques propriétés standards relatives aux comptes:
Get-ADUser -Filter * | Format-List
Le second uniquement les champs GivenName et Surname:
Get-ADUser –Filter * | Format-List -Property GivenName, Surname
Et le dernier toutes les propriétés de tous les comptes:
Get-ADUser –Filter * -Properties * | Format-List *
Activer ou désactiver un compte utilisateur
Tapez la commande suivante pour désactiver un compte donné:
PS C:\> Disable Login_du_Compte -ADAccount
Et la commande suivante pour l’activer:
PS C:\> Enable-ADAccount Login_du_Compte
Pour désactiver tous les comptes d’un département nommé ventes:
PS C:\> get-aduser -filter "department -eq 'sales'" | disable-adaccount
Déverrouiller un compte
La commande suivante permet de déverrouiller le compte:
PS C:\> Unlock-ADAccount Login_du_Compte
Supprimer un compte
Supprimer un compte AD en Powershell est si simple … tellement simple qu’il est conseillé d’ajouter le paramètre -whatif à la fin de votre commande avant de l’exécuter. Ce paramètre va permettre de simuler l’exécution de votre commande sans réellement l’appliquer. Les objets supprimés par votre commande vont s’afficher. A vous alors de vérifier que cela correspond bien à ce que vous souhaitez faire 😉 avant d’enlever le -whatif
PS C:\> Remove-ADUser Login_du_Compte -whatif What if: Performing operation "Remove" on Target "CN=Login_du_Compte,OU=Informatique,DC=TESTLAB,DC=local".
La commande suivante permet d’aller plus loin. Elle permet de supprimer TOUS les comptes Active Directory désactivés depuis plus de 180 jours dans l’OU Utilisateurs du domaine TESTLAB. Encore le -whatif à la fin pour vous permettre de tester le script avant son exécution réelle.
PS C:\> get-aduser -filter "enabled -eq 'false'" -property WhenChanged -SearchBase "OU=Utilisateurs, DC=TESTLAB,DC=Local" | where {$_.WhenChanged -le (Get-Date).AddDays(-180)} | Remove-ADuser -whatif
Rechercher les groupes vides
Ce script va parcourir tout l’annuaire et identifier les groupes vides:
PS C:\> get-adgroup -filter * | where {-Not ($_ | get-adgroupmember)} | Select Name
Cette autre version du script permet de limiter la recherche aux groupes universels d’une OU spécifique et ainsi réduire son temps d’exécution:
PS C:\> get-adgroup -filter "members -notlike '*' -AND GroupScope -eq 'Universal'" -SearchBase "OU=Groupes,OU=Europe,DC=TESTLAB, DC=local" | Select Name,Group*
Ajouter des membres dans un groupe
La commande suivante permet d’ajouter un compte utilisateur AD dans un groupe:
PS C:\> add-adgroupmember "Nom_Du_Groupe" -Members Login_du_Compte
Cette autre exemple exploite toute la puissance de la commande add-adgroupmember en ajoutant tous les utilisateurs de Paris au groupe Internet Access.
PS C:\> Add-ADGroupMember "Internet Access" -member (get-aduser -filter "city -eq 'Paris'")