[PowerShell] Active Directory 2008 R2 et PowerShell V2 – Activation de la fonctionnalité de Corbeille
L’intégration de la version 2 de PowerShell dans Windows 2008 Server R2, qui grâce aux cmdlets PowerShell permet l’accès à l’annuaire de Windows 2008 R2, vous allez pouvoir manipuler les objets. La version 2 apporte également une version GUI de PowerShell, ISE (Integrated Scripting Environment), qui vous permet lancer du débug, de mettre des points d’arrêt sur vos scripts PowerShell, les sauvegarder….
Certes vous pourriez utiliser des outils plus conventionnel, comme les outils en ligne de commande (dsadd, dsmod, dsrm, etc.), csvde, ldifde ou bien encore un environnement du type WSH (Windows Scripting Host), mais personnellement je trouve que PowerShell apporte un côté bien plus FUN à la chose.
Par exemple, quel administrateur ne s’est jamais morfondu d’ avoir à restaurer un objet qui aurait été supprimé par inadvertance…
Aie Aie!!!! Comment restaurer un objet AD ??? C’est toujours la question piège.
Alors, là, il faut soit utiliser des outils tiers permettant de faire l’opération le plus simplement possible, du genre:
Soit utiliser un SNAPSHOT, comme je l’avais écris dans un précédent POST, pour visualiser le contenu à un instant T, cela implique d’avoir une sauvegarde sous la main, soit utiliser la méthode Microsoft avec NTDSUTIL
Tout en sachant que lorsque vous supprimez un objet de type utilisateur, par exemple, vous perdez des informations comme l’appartenance aux groupes (
) et plusieurs autres attributs.
Il est possible de spécifier des attributs complémentaires à conserver lors de la suppression d’un objet via ADSIEDIT et l’attribut ‘SearchFlags’ de l’attribut Active Directory que vous souhaitez conserver.
Exemple pour l’attribut ‘DRINK’:
Dans Windows 2008 R2, Microsoft met à disposition de nouvelle fonctionnalité lié à active directory et notamment la fonctionnalité de corbeille (Recycle Bin). Cette fonctionnalité vous permettra de minimiser les temps d’arrêt de vos système pour devoir restaurer un objet supprimé par erreur.
En fait, lorsque cette fonctionnalité est activé, les liens (Link-Valued) sont conservé avec l’objet et peuvent ainsi être restauré dans le même état de cohérence qu’au moment de sa suppression. Cette fonctionnalité est disponible pour ADDS (Active Directory Domain Services) et ADLDS (Active Directory Lightweight Directory Services).
Par défaut celle-ci n’est pas active, il faudra donc penser à l’activer après l’installation de ADDS ou ADLDS. Cette fonctionnalité requière le niveau fonctionnel de foret ‘Windows 2008 R2’ et tous les DC de la foret fonctionnent sous Windows 2008 R2.
Il existe deux possibilités pour l’activation de cette fonctionnalité:
J’utiliserai PowerShell dans ce post. Vous pouvez visualisez la feature via LDP.
lancer la console PowerShell Active Directory
Enable-ADOptionalFeature –Identity ‘CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration, DC=MyDomainR2,DC=loc’ –Scope Forest –Target ‘MyDomainR2.loc’
Notez le message d’avertissement!!! L’activation de cette fonctionnalité est irréversible….
Pour tester la fonctionnalité, créez une structure de test avec une OU (Organizational Unit), un compte Utilisateur de test et un groupe de sécurité de test dont l’utilisateur sera membre.
/// Creation de l'ou OU_TEST
New-ADOrganizationalUnit -Name 'OU_TEST'
-Path 'dc=MydomainR2,dc=loc'
/// Creation de l'OU OU_USERS
New-ADOrganizationalUnit -Name 'OU_USERS'
-Path 'ou=OU_TEST,dc=MyDomainR2,dc=loc'
/// Creation de l'OU OU_Groupe
New-ADOrganizationalUnit -Name 'OU_Groupe'
-Path 'ou=OU_TEST,dc=MyDomainR2,dc=loc'
/// Creation de l'objet Utilisateur U_TEST dans l'OU OU_USERS
New-ADUser -samaccountname U_Test -Name "User Test"
-Path 'OU=OU_Users,OU=OU_TEST,dc=MyDomainR2,dc=loc'
/// Creation du groupe G_TEST dans l'OU OU_Groupe
New-ADGroup -samaccountname 'G_TEST' -DisplayName "G_TEST"
-Path 'OU=OU_Groupe,OU=OU_TEST,dc=MyDomainR2,dc=loc'-GroupScope Global
/// Ajout de l'objet Utilisateur dans le groupe
Add-ADGroupmember -Identity G_TEST -Members U_TEST
Voici le résultat:
Supprimez l’objet Utilisateur que vous avez créé précédemment. Aie!! Maintenant il va falloir récupérer l’objet…. En plus, pour restaurer l’objet faut-il encore arriver à le retrouver… Ou la ça se complique mon bon monsieur…
Pour retrouver lister le contenu du container ‘Deleted Objects’ de votre domaine via l’outil LDP ou encore utiliser PowerShell.
Get-ADObject -Searchbase "cn=Deleted Objects,dc=MyDomainR2,dc=loc" -Filter 'ObjectClass -eq "User"' -IncludeDeletedObjects
Cerise sur le gâteau!!!! le nouveau cmdlet Out-GridView qui permet de lancer la sortie de votre ligne de commande dans une table interactive dans laquelle vous allez pouvoir faire des recherches, des filtres…. Pour l’utiliser faite un pipe sur la commande précédente avec Out-GridView (alias ogv) - (Merci Christopher…). Voici le résultat :
Maintenant que nous avons retrouvé l’objet, récupérons le et vérifions que l’appartenance aux groupes est bien conservé.
Restore-AdObject -Identity <ObjectGUID de votre User>
L’appartenance aux groupes a bien été récupéré grâce à la fonctionnalité de corbeille de Windows 2008 R2.