Gérer la corbeille Active Directory avec PowerShell
Sommaire
I. Présentation
La corbeille Active Directory est une fonctionnalité présente sous Windows Server depuis Windows Server 2008 R2. Au même titre que la corbeille de Windows, elle permet de récupérer des éléments supprimés, notamment des objets ordinateurs, utilisateurs ou des groupes. Une fonctionnalité indispensable pour se protéger contre les suppressions accidentelles, qui peuvent s’avérer désastreuses.
Cette fonctionnalité nécessite que le niveau fonctionnel de votre domaine et votre forêt soit au minimum « Windows Server 2008 R2 », sinon vous ne pourrez pas l’activer.
Dans ce chapitre, je vous propose d’apprendre à gérer la corbeille Active Directory à partir de PowerShell, que ce soit pour l’activer si elle ne l’est pas déjà, mais aussi pour restaurer un objet de la corbeille ainsi que pour la purger.
II. Activer la corbeille Active Directory
Le fait d’activer la corbeille Active Directory va altérer votre schéma Active Directory, ce qui implique que cette action est irréversible.
Ci-dessous, la commande à exécuter depuis votre contrôleur de domaine afin d’activer la corbeille. Il suffit de remplacer le domaine « it-connect.local » au sein du paramètre -Target, par votre domaine.
Enable-ADOptionalFeature 'Recycle Bin Feature' -Scope ForestOrConfigurationSet -Target it-connect.local
Lors de l’exécution de la commande, vous devrez confirmer l’opération avec « T » ou « O ».
III. Restaurer un objet de la corbeille Active Directory
Afin de s’exercer, je vous invite à créer un utilisateur dans l’Active Directory puis à le supprimer directement : il va rejoindre la corbeille Active Directory. Pour ma part, il s’agit d’un utilisateur avec le « sAMAccountName » égal à « Florian ».
Une fois supprimé, nous pouvons lister le contenu de la corbeille Active Directory avec cette commande :
Get-ADObject -Filter 'isdeleted -eq $true' -IncludeDeletedObjects
Sur la copie d’écran ci-dessous, nous pouvons voir que l’utilisateur « florian » est bien supprimé. Il s’agit de l’utilisateur avec le DistinguishedName qui commence par « CN=Florian IT-Connect ». Nous remarquons également sa présence dans la corbeille puisqu’il est dans le container « Deleted Objects ».
Grâce aux commandes Get-ADObject et Restore-ADObject, il ne reste plus qu’à restaurer cet objet. Ci-dessous, la commande pour restaurer l’utilisateur « florian » :
Get-ADObject -Filter 'sAMAccountName -eq "florian"' -IncludeDeletedObjects | Restore-ADObject
Ensuite, si l’on consulte le contenu de la corbeille Active Directory, on peut constater que l’utilisateur n’est plus dedans ! Une bonne nouvelle… Il est de retour dans l’Active Directory à son emplacement d’origine au moment de la suppression.
IV. Purger la corbeille Active Directory
Désormais, je vais vous expliquer comment purger la corbeille Active Directory pour supprimer définitivement les éléments qui s'y trouvent. Cela va permettre d'effacer définitivement toutes les traces au sujet d'un compte utilisateur ou d'un compte ordinateur, par exemple. Comme nous l’avons vu dans le chapitre précédent, il est recommandé de conserver les comptes correspondants aux utilisateurs qui ont quittés votre entreprise, en appliquant des règles spécifiques (désactiver l’objet, notamment).
Note : par défaut, un objet sera définitivement supprimé après 180 jours passés dans la corbeille afin d’assurer un nettoyage régulier et éviter qu’elle cumule des objets indéfiniment. L’attribut msDS-deletedObjectLifetime contient cette valeur correspondante au « Deleted Object Lifetime » c’est-à-dire la durée de vie d’un objet supprimé.
Pour effectuer cette action sur la corbeille, le cmdlet "Get-ADObject" sera utile pour récupérer la liste des objets supprimés (et que l’on peut purger) en se basant sur deux critères :
- L'attribut isDeleted égal à vrai (true)
- La présence de "DEL:" dans le nom de l'objet.
Il faut également penser à inclure le paramètre -IncludeDeletedObjects pour que la commande retourne aussi les objets supprimés : indispensable compte tenu de ce que l’on cherche à effectuer comme action.
Ci-dessous, la commande permettant de visualiser l'ensemble des éléments supprimés, ce qui permet de visualiser le contenu de la corbeille Active Directory.
Get-ADObject -Filter 'isDeleted -eq $true -and Name -like "*DEL:*"' -IncludeDeletedObjects
Si l'on veut visualiser seulement les objets ordinateurs présents dans la corbeille, c’est-à-dire les objets avec la classe « computer », on va ajouter un filtre afin de cibler cette classe. En PowerShell, ceci ce traduit par l’ajout de la condition suivante pour filtrer sur la classe « computer » : -and ObjectClass -eq "computer
Si l’on reprend la commande Get-ADObject, nous obtenons :
Get-ADObject -Filter 'isDeleted -eq $true -and Name -like "*DEL:*" -and ObjectClass -eq "computer"' -IncludeDeletedObjects
Pour les utilisateurs, le principe est le même, sauf que l'on remplace "computer" par "user" pour cibler une classe différente. La commande Get-ADObject devient :
Get-ADObject -Filter 'isDeleted -eq $true -and Name -like "*DEL:*" -and ObjectClass -eq "user"' -IncludeDeletedObjects
Pur supprimer les objets de la corbeille Active Directory, par exemple tous les utilisateurs ou tous les utilisateurs, il faudra coupler Get-ADObject avec Remove-ADObject. La première commande va récupérer la liste des l’objets comme nous l’avons vu, pour ensuite envoyer son résultat à la seconde commande grâce au pipeline. Vous l’aurez compris, la commande « Remove-ADObject » va supprimer les objets.
Ci-dessous, la commande complète pour supprimer les ordinateurs de la corbeille :
Get-ADObject -Filter 'isDeleted -eq $true -and Name -like "*DEL:*" -and ObjectClass -eq "computer"' -IncludeDeletedObjects | Remove-ADObject -Confirm:$false
Les utilisateurs et les autres objets dans la corbeille ne seront pas altérés par cette commande. Pour vider toute la corbeille, il suffit de retirer le filtre sur les classes d'objets (premier exemple) et d'ajouter le Remove-ADObject.
Avec ces différentes commandes, vous êtes en mesure d’activer la corbeille Active Directory sur votre domaine et de gérer les objets supprimés, notamment pour réaliser la restauration d’un objet si le cas se présente.