Gestion des snapshots sous Active Directory
Les snapshots avec Active Directory doivent être réalisés de manière particulière. Ce billet va aborder la façon de gérer les snapshots mais également de restaurer des objets de façon simple et sans arrêt de production.
Pour créer un snapshot, l’outil NTDSUTIL doit être utilisé et la syntaxe est assez simple et peut être scripté, idéal donc pour planifier des snapshots régulier.
- Pour créer un snapshot
-
ntdsutil "Activate Instance NTDS" snapshot create quit quitt
-
- Pour lister tous les snapshots
-
ntdsutil snapshot "list all" quit quit
-
- Pour monter un snapshot
-
ntdsutil snapshot "list all" "mount x" quit quit
-
- Pour démonter un snapshot
-
ntdsutil snapshot "list mounted" "unmount x" quit quit
-
- Pour supprimer un snapshot
-
ntdsutil snapshot "list all" "delete x"quit quit
-
Maintenant, il convient de monter le snapshot désiré à l’aide de la syntaxe suivante sur un port différent du LDAP, ici 33389: [test]dsamain -dbpath « C:\monchemin\ntds.dit » -ldapport 33389[/text]. Laissez la fenêtre de l’invite de commande ouverte.
Ensuite, il convient d’explorer le snapshot pour y retrouver les informations tant désirées, avec ADSIEDIT, LDP ou encore Utilisateurs et Ordinateurs Active Directory. Ici, on se connecte au serveur LDAP monté par DSAMAIN sur le port 33389.
Si vous ne savez pas ce qui a été supprimé, je vous conseille de lancer le script de Ken St. Cyr avant et après snapshot et de comparer les fichiers générés.
'-------------------------------------------------------------------------- ' NAME: export-attr.vbs ' DATE: 3/6/2008 ' DESCRIPTION: Connects to a directory service provider on the specified ' port and exports a list of attributes for each user object ' in the directory to a tab-separated values file. ' AUTHOR: Ken St. Cyr '-------------------------------------------------------------------------- Option Explicit ' Define our parameters CONST LDAPPORT = 33389 CONST DCNAME = "localhost" CONST ATTRIBUTES = "samAccountName,displayName" CONST OUTPUT_FILE = "attribute_backup.tsv" ' Create the necessary objects for writing to a file Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject") Dim objFile : Set objFile = objFSO.OpenTextFile(OUTPUT_FILE, 8, True) ' Get the RootDSE for the directory on the port that we want Dim objRootDSE : Set objRootDSE = GetObject("LDAP://" & DCNAME & ":" & _ LDAPPORT & "/RootDSE") ' Create the connection object for the AD provider Dim objConnection : Set objConnection = CreateObject("ADODB.Connection") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" ' Define the search to execute Dim objCommand : Set objCommand = CreateObject("ADODB.Command") objCommand.CommandText = "<LDAP://" & DCNAME & ":" & LDAPPORT & "/" & _ objRootDSE.Get("defaultNamingContext") & ">;(&objectCategory=user);" & _ ATTRIBUTES & ";subtree" objCommand.ActiveConnection = objConnection ' Execute the search Dim objRecordSet : Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst ' Go through each result about output the attributes to a Tab-Separated file While Not objRecordSet.EOF Dim strSAMAccountName : strSAMAccountName = objRecordSet.Fields("samaccountname") Dim strDisplayName : strDisplayName = objRecordSet.Fields("displayName") objFile.WriteLine strSAMAccountName & vbtab & strDisplayName objRecordSet.MoveNext Wend objFile.Close WScript.Echo objRecordSet.RecordCount & " entries written to " & OUTPUT_FILE
Si vous désirez rajouter des attributs, il convient de rajouter une ligne de type
Dim strMONATTRIBUT: strMONATTRIBUT = objRecordSet.Fields("attribut")
et de rajouter à la ligne 64
objFile.WriteLine strSAMAccountName & vbtab & strDisplayName & strMONATTRIBUT
L’utilitaire Directory Service Comparison Tool permet de réanimer très très simplement un object. Téléchargez l’utilitaire ici, et lancez une console MMC et ajouter le snap-in Directory Service Comparison Tool et renseignez les serveurs avec les différents ports IP. ET instantanément, l’outil affiche les objets supprimés et permet même de les restaurer d’un simple clic avec « Reanimate ». Toutes les informations ici.
Lorsque vous avez terminé, appuyez sur CTRL+C dans la fenêtre qui exécute DSAMAIN, puis démontez le snapshot.
Retrouvez l’intégralité de la syntaxe de dsamain ici.
Je travaille actuellement en tant qu’Enterprise Architect pour le groupe CAPGEMINI. Acteur et expert communautaire reconnu depuis de nombreuses années, j’anime ce site autour des technologies Microsoft, des thématiques du Cloud, des infrastructures, … Je suis également à l’origine de nombreuses publications dans la presse IT.