Administrer Active Directory avec PowerShell

Salut à tous.

Cet article a pour but de vous expliquer comment gérer un annuaire Active Directory avec PowerShell et plus précisément avec le module Quest ActiveRoles Management Shell.

1. Présentation de PowerShell :
– PowerShell s’appuie sur les classes d’objets du .Net Framework. En fait les commandes PowerShell (CMDLET) sont des classes .Net Framework simplifiées.
– PowerShell est extensible (modules). Tout nouveau logiciel Microsoft est fourni avec un module d’administration PowerShell.
– Les commandes PowerShell sont toujours sous la forme ACTION-OBJET et sont relativement claires.
  Exemples d’actions : Add, Export, Get, New, Out, Remove, Select, Set, Start, Stop, Test, Where…
  Exemples d’objet : ChildItem, content, alias, file, object, QADObject, QADuser, string…
  La commande Get-Content permet par exemple de lire le contenu d’un fichier.
– PowerShell permet de chainer les commandes. La commande ci-dessous permet par exemple de désactiver tous les comptes utilisateurs qui se trouvent dans l’OU Utilisateurs.
Get-QADUser -SearchRoot “OU=Utilisateurs,DC=TPHAT,DC=INTRA” | Disable-QADUser
PowerShell permet d’utiliser les classes WMI / .Net Framework ceux qui étend encore les possibilités de l’outil.
– PowerShell est un langage de développement / scripting orienté objet. Une commande PowerShell renvoie un objet. Il est possible de filtrer les attributs avec la commande Select-Object. La commande ci-dessous permet par exemple d’afficher les attributs SamAccountName, Description, Company  de tous les comptes utilisateurs de l’OU Utilisateurs du domaine TPHAT.INTRA.
Get-QADUser -SearchRoot “OU=Utilisateurs,DC=TPHAT,DC=INTRA” | Select-Object SamAccountName,Description,Company
PowerShell renvoie le résultat suivant :
SamAccountName                          Description                             Company
————–                          ———–                             ——-
guillaume.mathieu                       Compte utilisateur                      PROSERVIA
tigrou.mathieu                          Compte utilisateur                      PROSERVIA
melanie.mathieu                         Compte utilisateur                      PROSERVIA
– PowerShell prend aussi  en charge les boucles conditionnelles, les variables. Pour plus d’informations, je vous invite à lire les articles suivants :
http://www.computerperformance.co.uk/powershell/powershell_if_statement.htm
http://technet.microsoft.com/en-us/library/ee692804.aspx
http://www.powershellpro.com/powershell-tutorial-introduction/variables-arrays-hashes/
-PowerShell gère l’auto-complexion à l’aide de la touche TAB. Si je tape Get- et que j’appuie sur la touche TAB, toutes les commandes contenant Get- s’affichent comme Get-QADuser.

2. Les commandes indispensables à connaître :
2.1 Pour afficher l’aide d’une commande :
Pour afficher les explications complètes de la commande Get-QADuser :
Get-Help Get-QADuser -full
Pour afficher des exemples d’utilisation de la commande Get-QADuser :
Get-Help Get-QADuser -examples

2.2 Pour filtrer l’affichage du commande :
PowerShell permet d’afficher le résultat d’une commande sous forme :
– D’un tableau avec la commande : Format-Table
– D’une liste avec la commande : Format-List
La commande suivante permet par exemple d’afficher toutes les propriétés du compte utilisateur melanie.mathieu sous forme d’une liste :
Get-QADUser -IncludeAllProperties -Identity melanie.mathieu | Format-List *

2.3 Pour exporter la liste de tous les utilisateurs de l’OU Utilisateurs :
La commande Export-CSV permet d’exporter les résultats d’une commande PowerShell sous forme de fichier CSV. Attention, il faut utiliser PowerShell V2 pour pouvoir spécifier le type de séparateur avec le paramètre -UseCulture. Toujours spécifier le format de fichier UTF8 pour la prise en charge des accents.
Get-QADUser -SearchRoot “OU=Utilisateurs,DC=TPHAT,DC=INTRA” | Select-Object SamAccountName,Description,Company | Export-Csv -Path c:\resultat.csv -UseCulture  -Encoding UTF8

3. Administrer l’annuaire Active Directory avec l’outil Quest ActiveRoles Management Shell :
3.1 Présentation de l’outil Quest ActiveRoles Management Shell :
Il s’agit d’un module PowerShell (gratuit) qui permet de gérer un annuaire Active Directory.
Lancer ActiveRoles Management Shell et taper la commande Get-PSSnapin.
PowerShell renvoie la liste des modules PowerShell :
Name : Microsoft.PowerShell.Diagnostics
PSVersion : 2.0
Description : This Windows PowerShell …
Name : Quest.ActiveRoles.ADManagement
PSVersion : 1.0
Description : This Windows PowerShell snap-in contains cmdlets to manage Active Directory…
La console ActiveRoles Management Shell est en fait une console PowerShell avec le module Quest.ActiveRoles.ADManagement préchargé.
Si vous le souhaitez, vous pouvez aussi lancer une invite PowerShell et charger le module PowerShell Quest manuellement en tapant la commande suivante :
Add-PSSnapin Quest.ActiveRoles.ADManagement

3.2 Pour lister des comptes utilisateurs :
Pour lister tous les comptes utilisateurs d’une OU et afficher uniquement les champs SamAccountName (login) et LastlogonTimeStamp (date de dernier login) et exporter le résultat sous forme d’un fichier CSV :
Get-QADUser -SearchRoot “OU=Utilisateurs,DC=TPHAT,DC=INTRA” | Select-Object SamAccountName, LastLogonTimeStamp | Export-Csv -Path c:\resultat.csv -UseCulture  -Encoding UTF8
Utiliser le paramètre  -IncludeAllProperties pour afficher tous les attributs d’un compte utilisateur avec la commande PowerShell.
Pour trouver le nom de l’attributs, créer un compte utilisateur (guillaume.mathieu) et compléter les champs requis puis taper la commande suivante :
Get-QADUser -IncludeAllProperties -Identity guillaume.mathieu | Format-List -Property *
Pour lister les comptes utilisateurs en fonction d’une valeur :
Afficher que les comptes utilisateurs avec une description avec la valeur PROSERVIA :
Get-QADuser -Description “Compte utilisateur”
Pour certains attributs, il est cependant obligatoire d’utiliser la commande Where-Object qui permet de filtrer les résultats.
$_.EmployeeType signifie la valeur de l’attribut EmployeeType de l’objet Utilisateur que la commande Get-QADuser sort en résultat.
Il est possible de filtrer sur plusieurs conditions. N’oublier pas les parenthèses dans ce cas !
Get-QADuser -IncludeAllProperties | Where-object {($_.EmployeeType -match “Employee”) -AND ($_.Description -match “Compte”)}

3.3 Script pour importer des comptes utilisateurs à partir d’un fichier CSV :
Pour cela, on va utiliser la commande Import-Csv et utiliser la commande foreach .
Il est possible d’exécuter des scripts PowerShell. Par défaut l’exécution de script non signé est interdite. Pour l’autoriser, il faut taper la commande suivante : Set-ExecutionPolicy Unrestricted
Créer un fichier Excel avec la liste des utilisateurs appelé c:\base.csv avec les colonnes suivantes :
Name ;SamAccountName (pour le login),FistName (pour le prénom), LastName (pour le nom de famille), Password (pour le mot de passe).
Créer le fichier avec NOTEPAD et l’enregistrer au format UTF8. Par défaut Notepad enregistre en ANSI. Dans le cas contraire, les accents ne seront pas correctement pris en compte.
Exemple de fichiers CSV :
Name;SamAccountName;FistName;LastName;Password
Guillaume Mathieu Test;gmmathieutest;Guillaume;Mathieu Test;P@ssword
Amélie Mathieu Test;amathieutest;Amélie;Mathieu Test;P@ssword
Créer un fichier texte appelé import.ps1 et copier le contenu du script suivant :
$users = Import-csv -path c:\base.csv -UseCulture
foreach ($user in $users)
{
  New-QADuser -Name $($user.name) -SamAccountName $($user.SamAccountName) -FirstName $($user.FirstName) -LastName $($user.LastName) –UserPassword $($user.Password) –ParentContainer “OU=Utilisateurs,DC=TPHAT,DC=INTRA”
}

3.4 Pour modifier la valeur d’un utilisateur :
Dans l’exemple ci-dessous, on définit la valeur du champ société à Proservia pour le compte guillaume.mathieu
Get-QADUser -Identity guillaume.mathieu | Set-QADUser -Company Proservia
Il est possible de faire cette action sur plusieurs comptes en définissant une OU :
Get-QADUser -SearchRoot “Ou=Utilisateurs,DC=tphat,dc=intra” | Set-QADUser -Company Proservia

3.5 Pour gérer des groupes :
La commande Get-QADGroupMember -Identity AI_Avant-Vente_RO –Indirect permet d’afficher les membres directes et indirectes (groupes dans des groupes) d’un groupe. 
3.6 Pour supprimer un objet (groupe / compte utilisateur) :
Get-QADUser -SearchRoot “Ou=Utilisateurs,DC=tphat,dc=intra” | Remove-QADObject –Force

4. Les exemples de code / pour en savoir plus :
Le script Center de Microsoft dispose de nombreux script PowerShell en libre téléchargement.
Ce dernier est accessible à l’adresse suivante :
http://technet.microsoft.com/en-us/scriptcenter/bb410849.aspx

A+
Guillaume MATHIEU
Consultant PROSERVIA
La connaissance s’accroît quand on la partage.

Publié dans Active Directory, ActiveRoles for Server, Annuaire, Outils, PowerShell, Scripts, Windows 2000 Server, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2 | Marqué avec , | Laisser un commentaire

Gérer l’accès aux données de l’entreprise : organisation des données, réplication et gestion des accès concurrents en écriture

Salut à tous

Architecture actuelle du client :
Le client dispose d’un site principal (200 utilisateurs / stations de travail) et d’une agence (30 utilisateurs / stations de travail).
La bande passante entre les deux sites est faible et doit être économisée au maximum.

Les besoins du client :
Le client souhaite :
1. Organiser les données sous forme d’une arborescence unique.
2. Répliquer les données sur plusieurs sites (PRA).
3. Limiter l’impact sur la liaison WAN entre les deux sites quand les utilisateurs de l’agence ouvre / modifie un fichier sur les serveurs de fichiers.
La problématique des accès concurrents en modification (un utilisateur du siège et un utilisateur de l’agence modifient en même temps le même fichier) doit être prise en compte.

1. Solution préconisée pour la mise en place d’une arborescence unique :La meilleure solution est de mettre en place un espace de noms DFS. Si vous souhaitez en savoir plus, je vous invite à lire cet article : http://msreport.free.fr/?p=281

2. Solutions préconisées pour répliquer les données sur plusieurs sites (PRA) :
Plusieurs solutions sont possibles :

Solution 2A : utilisation du système de réplication DFS-R :
Cette solution nécessite de disposer de serveur de fichiers Windows 2003 R2 au minimum (espace de noms DFS en mode Windows 2000). Le moteur de réplication DFS permet de définir des plages horaires pour la réplication et limiter les débits. Quand deux réplicas existent pour le même partage, les utilisateurs sont redirigés vers un réplica en fonction de leur site Active Directory de rattachement. Si la topologie de site / sous réseaux IP Active Directory est bien configurée, l’utilisateur va se connecter sur un réplica accessible à travers un réseau rapide (le plus rapide possible en tout cas).
La principale contrainte de cette solution est qu’elle ne gère pas la problématique des accès concurrents en modification (un utilisateur du siège et un utilisateur de l’agence modifient en même temps le même fichier). Le Technet Microsoft est très claire sur le sujet :
« Do not use DFS Replication in an environment where multiple users update or modify the same files simultaneously on different servers. Doing so can cause DFS Replication to move conflicting copies of the files to the hidden DfsrPrivate\ConflictandDeleted folder. »
En cas de conflits, un des deux fichiers est déplacé dans le sous dossier DfsrPrivate\ConflictandDeleted folder à la racine de chaque cible DFS. Ce répertoire n’est visible que par les administrateurs et a une taille limite (à modifier !!!). Il y a donc un risque de perte de données.
Si vous souhaitez uniquement répliquer les fichiers dans le cadre d’un PRA, configurer l’espace de noms DFS pour forcer tous les utilisateurs à se connecter sur le même réplica !
Windows 2012 inclue de nombreuses nouveautés au niveau du DFS mais rien par rapport à la problématique des accès concurrents en modification au même fichier depuis 2 réplicas DFS.
Pour plus d’informations :
http://blogs.technet.com/b/filecab/archive/2012/11/12/dfs-replication-improvements-in-windows-server-2012.aspx
http://blogs.technet.com/b/askds/archive/2010/01/05/understanding-dfsr-conflict-algorithms-and-doing-something-about-conflicts.aspx
http://blogs.technet.com/b/askds/archive/2009/02/20/understanding-the-lack-of-distributed-file-locking-in-dfsr.aspx

Solution 2B : utilisation du système de réplication DFS-R et du plugin PeerLock :
Même principe que la solution précédente mais la gestion des conflits en modification est gérée par le module PeerLock (1500 € par serveur de fichiers). Cette solution est fonctionnelle (validation sur maquette) mais présente les problématiques suivantes :
– Quand on ouvre le fichier sur le site A, le fichier n’est accessible qu’en lecture sur le site B. Cependant cela bloque la réplication DFS.  Quand on ferme l’application, le fichier doit encore répliqué. Si un utilisateur ouvre le fichier avant que ce dernier réplique, il peut y avoir un conflit !
– Pour que cela fonctionne, les applications doivent disposer d’un système de lock ce qui n’est pas le cas de toutes les applications. NOTEPAD permet par exemple d’ouvrir un fichier TXT plusieurs fois en modifications.
– Cette solution gère un maximum de 3 serveurs de fichiers en mode réplication multi-maître (faible montée en charge).

Procédure de mise en place de PEARLOCK :
http://www.peersoftware.com/support/knowledgebase/item/what-are-the-recommended-peerlock-options-to-work-with-dfs-replication.html
http://www.peersoftware.com/support/knowledgebase

Solution 2C : Utilisation de la solution PeerLink :
Cette solution est plus complète / fonctionnelle que la solution DFS-R / PeerLock et corrige les principaux défault de la solution DFS-R / PeerLock.
http://www.peersoftware.com/products/file-collaboration/peerlink.html
La principale problématique semble l’absence d’un support en Français.

3. Solutions pour limiter l’impact sur la liaison WAN entre les deux sites quand les utilisateurs de l’agence ouvre / modifie un fichier sur les serveurs de fichiers :
Si votre besoin est d’économiser la bande passante et non pas de répliquer les données, les solutions suivantes sont possible :
– Utilisation de DFS / DFS-R / PeerLock
– Utilisation de PeerLink
– Utilisation de BranchCache.
Je vous préconise clairement la solution BranchCache.

Présentation de la solution BranchCache :
Cette solution nécessite des serveurs Windows 2008 R2 et des stations de travail sous Windows 7 Enterprise / Ultimate (cela ne marche pas avec Windows 7 Professionnel).
Que retenir de cette solution :
Le mécanisme de cache n’est utilisé que pour les accès en lecture aux données. En cas de modification, l’utilisateur se connecte au serveur.
BranchCache supporte le protocole BITS, SMB et HTTP.
Je vous invite à lire les documents suivants pour la mise en place de la solution :
http://technet.microsoft.com/fr-fr/library/dd996641(v=ws.10).aspx
http://technet.microsoft.com/fr-fr/library/dd996634(v=ws.10).aspx
http://www.labo-microsoft.org/articles/SCCM_BranchCache/0/?action=print
http://www.microsoft.com/en-us/download/details.aspx?id=19558
http://windowsitpro.com/windows/q-how-can-i-test-if-branchcache-working
http://social.technet.microsoft.com/Forums/windowsserver/en-US/9f6de382-f317-45fe-8932-dac8ed904872/branchcache-cache-is-not-used-by-clients

Penser à configurer la latence sur 0 si vous êtes en environnement de tests.
Pour voir les paramètres BranchCache sur une machine : netsh branchcache show status all 
Pour purger le cache BranchCache : netsh branchcache flush
Pour vérifier que la solution BranchCache fonctionne (pour les accès SMB) en mode Distribué :
– Il faut au moins 2 machines Windows 7 Enterprise. Une qui accède au fichier la première fois et la seconde qui accède au fichier via le cache.
– Démarrer le Performance Monitor (Control Panel\All Control Panel Items\Administrative Tools) et ajouter les compteurs : BanchCache\SMB : Bytes from cache et BanchCache\SMB : Bytes from server.

Conclusion :
Pour moi, la meilleure solution est :
– De configurer un ou plusieurs espaces de noms DFS.
– Utiliser le moteur DFS-R pour répliquer les données entre le siège et l’agence mais en configurant l’espace de noms pour que tous les clients se connectent au même serveur DFS. Les utilisateurs de l’agence se connecteront donc au serveur sur le site centrale.
– Utiliser BranchCache pour permettre de réduire le besoin en bande passante au niveau de l’agence.

A+
Guillaume MATHIEU
Consultant PROSERVIA
La connaissance s’accroît quand on la partage.

Publié dans Active Directory, Annuaire, DFS, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2 | Un commentaire

Associer le profil d’un utilisateur A à un utilisateur B sous Windows 7 -> Explorer.exe. Windows cannot access to the specied device, path or file. You may not have the appropriate permissions to access the item.

Bonjour à tous

Avez-vous déjà essayé d’associer un profil d’un utilisateur A à un utilisateur B sous Windows 7. Le moins que l’on puisse dire, c’est que c’est pas facile.
Pour ceux qui ne connaissent pas encore, tout repose sur le fait de modifier l’entrée de registre ProfileImagePath et de déléguer les bons droits sur le dossier de l’utilisateur (c:\users\nom_utilisateur)et les entrées de registre (ruche HKEY_CURRENT_USER, c’est-à-dire le fichier NTUSER.DAT du profil de l’utilisateur).
Cette entrée de registre permet d’associer le profil (dossier c:\users\nom_utilisateur) au SID du compte utilisateur.

Problème 1 : message d’erreur quand on change les permissions sur le dossier de l’utilisateur
Quand on définit les permissions sur le répertoire, on a le message d’erreur suivant
« An error occured while applying security information to. Access is denied ».
Ce message peut être ignoré car il se produit uniquement au niveau des points de jonction.
http://support.microsoft.com/kb/975702/en-us
On parle de points de jonction quand deux dossiers pointent vers les mêmes blocs disques. Exemple :
C:\users et C:\Documents and settings sont des points de jonction.
C:\Documents and settings a été conservé pour la compatibilité.
Si on essaie de naviguer dans c:\Documents and settings, on a un message Accès refusé.
Par contre si on spécifie c:\Documents and settings\nom_utilisateur cela fonctionne.

Problème 2 : Explorer.exe. Windows cannot access to the specied device, path or file. You may not have the appropriate permissiosn to access the item 
Si l’utilisateur n’est pas administrateur et/ou si l’UAC est activé, on a le message d’erreur suivant quand on accède à l’explorateur ou à regedt32.
« Explorer.exe. Windows cannot access to the specied device, path or file. You may not have the appropriate permissiosn to access the item ».
Ce problème est décrit sur de nombreux forums (pas de solution).
http://social.technet.microsoft.com/Forums/windows/fr-FR/5a27b553-0c33-4de6-8219-6356645e6b7e/windows-7-change-local-profile-to-domain-profile-instantly
http://social.technet.microsoft.com/Forums/windows/fr-FR/5a27b553-0c33-4de6-8219-6356645e6b7e/windows-7-change-local-profile-to-domain-profile-instantly
http://techthat.net/tag/profileimagepath/
http://blogs.technet.com/b/deployment_field_notes/archive/2011/11/03/a-corrupted-profile-problem.aspx.
La seule solution que j’ai trouvé pour corriger le problème est d’utiliser un outil tiers appelé User Profile Wizard 3.7 de la société ForerensiT.
http://www.forensit.com/
http://www.forensit.com/domain-migration.html
Cet outil peut être utilisé gratuitement pour un usage personnel. Il permet aussi de joindre la machine dans le domaine (interface simple et efficace).

Remarques :
Avec ProcessMonitor je vais finir trouver quelles entrées de registre / fichiers il faut maintenant modifié.
Pas de documentation côté Microsoft.

A+
Guillaume MATHIEU
Consultant PROSERVIA
La connaissance s’accroît quand on la partage

Publié dans Active Directory, Annuaire, Bug, Migration, Système, Troubleshouting, Windows Seven | Marqué avec , | Laisser un commentaire

Les casse tête de la suppression des comptes utilisateurs Active Directory !

Bonjour à tous

Lors de différentes prestations, j’ai été confronté à la problématique de la suppression des objets dans un annuaire Active Directory.
Cette article traite des points suivants :
– Pourquoi supprimer les comptes utilisateurs.
– Pourquoi en cas de suppression accidentelle d’un compte utilisateur, le recréer avec le même login / mots de passe ne sert à rien ?
– Que se passe t’il quand on supprime un compte utilisateur dans l’annuaire Active Directory ?
– Comment restaurer les comptes utilisateurs dans un annuaire Active Directory sans la corbeille Active Directory ?
– Comment restaurer les comptes utilisateurs dans un annaire Active Directory avec la corbeille Active Directory.

1. POURQUOI SUPPRIMER LES COMPTES UTILISATEURS ?
Quand un utilisateur ou un prestataire quitte la société, une bonne pratique est de bloquer les accès de cet utilisateur. Pour cela, il est possible :
– De désactiver le compte de l’utilisateur.
– De supprimer le compte de l’utilisateur.
Ces 2 méthodes permettront d’arriver au même objectif : l’utilisateur ne peut plus se connecter.
La désactivation du compte permet un retour arrière simple. Si l’utilisateur travaille de nouveau pour l’entreprise (cela arrive plus souvent qu’on le pense), on réactive le compte.
La suppression des comptes utilisateurs permet de diminuer la taille du fichier NTDS.DIT (la base de données Active Directory) surtout si on stocke des informations volumineuses dans l’annuaire comme la photo de l’utilisateur. Cependant la procédure de retour arrière est plus complexe.

2. POURQUOI EN CAS DE SUPPRESSION ACCIDENTELLE D’UN COMPTE UTILISATEUR, LE RECREER AVEC LE MEME LOGIN / MOTS DE PASSE NE SERT A RIEN ?
J’ai remarqué que les équipes informatiques recréés souvent le compte utilisateur supprimé en utilisant le même login / mot de passe.
Cette procédure n’est pas adaptée surtout en cas de suppression accidentelle d’un compte utilisateur. En effet, l’utilisateur pourra ouvrir sa session avec son login / mot de passe. Cependant il rencontrera les probèmes suivants :
– Il perdra l’accès à son profil utilisateur. En effet le profil utilisateur (dossier c:\users\nom_utilisateur) est mappé au SID du compte utilisateur (http://support.microsoft.com/kb/324734/fr). Hors le SID de l’ancien et du nouveau compte ne sont pas les mêmes. Le SID est géréné à la création de l’objet et ne pas peut être réutilisé par un autre compte.
– Il perdra l’accès à tous ses fichiers. En effet il sera nécessaire de remettre le compte utilisateur dans les bons groupes. L’utilisateur perdra l’accès à tous les fichiers sécurisés via le SID de son ancien compte utilisateur.
– Il perdra l’accès à sa boîte aux lettres Exchange (associé via le SID).
Pour toutes ces raisons, je déconseille de recréer un compte utilisateur neuf en cas de suppression accidentel d’un compte utilisateur. Les arguements ci-dessus peuvent être nuancé dans le scénario d’un utilisateur qui revient travailler dans la société après une longue absence. En effet tous ces données auront déjà été probablement déjà supprimées / réorganisées.
Nous verrons dans la suite de cet article que la bonne méthode est de restaurer le compte utilisateur en cas de suppression accidentelle.

3. QUE SE PASSE T’IL QUAND ON SUPPRIME UN COMPTE UTILISATEUR DANS L’ANNUAIRE ACTIVE DIRECTORY ?
Le compte utilisateur n’est pas supprimé réellement de la base de données Active Directory ! Ce comportement s’explique par le mécanisme de réplication Active Directory.
Quand on modifie un objet Active Directory, le numéro de séquence (attribut uSNChanged) est incrémenté. Pour déterminer les objets qu’il doit répliquer depuis un autre contrôleur de domaine, un contrôleur de domaine  liste les objets dont le numéro de séquence a été changé. Il réplique tous les objets dont le numéro de séquence sur l’autre contrôleur de domaine est supérieur.
Hors l’opération de suppression est un changement comme les autres. Ce changement doit être répliqué !!! 

Cas 1 : la corbeille Active Directory n’est pas activée.
Active Directory effectue les actions suivantes lors de la suppression d’un compte utilisateur :
– Définit l’attribut Is Deleted à 1.
– Supprime les attributs inutiles de l’objet. Les attributs systèmes comme ObjectSID (le SID du compte utilisateur) sont conservés.
– Renomme ensuite l’objet.
– Le déplace dans le conteneur suivant (exemple avec le domaine tphat.intra) : CN=Deleted Objects, DC=tphat,DC=intra
Ce conteneur n’est pas visible dans ADSIEDIT. Il faut utiliser l’utilitaire LDP.EXE (exemple sur un contrôleur de domaine Windows 2003).
Dans LDP, aller dans Connection | Bind. Entrer le login, mot de passe et le nom du domaine (nom DNS). Cliquer sur OK.
Aller dans le menu Browse | Search.
Taper comme Base DN : DC=tphat,dc=intra
Sélectionner « One Level » pour le scop.
Cliquer sur Options.
Dans la fenêtre Search Option, cocher Extended pour Search Call Type. Mettre *; dans le champ attributes. Cliquer ensuite sur Controls.
Dans la fenêtre Controls, sélectionner au niveau de Load Predefined le choix Return deleted objects. Décocher Critical. Cliquer sur OK puis dans la fenêtre Search, taper sur Run.
Cliquer sur View | Tree puis saisir DC=tphat,dc=com comme Base DN.
Le  conteneur CN=Deleted Objects apparaît maintenant.
Le compte utilisateur est réellement supprimé de l’annuaire Active Directory après un intervalle de temps appelé TombstoneLifeTime. Par défaut cette valeur est de 180 jours pour les domaines créés sous Windows 2003 SP1 et ultérieur, 60 jours pour les domaines créés à l’époque de Windows 2000.
Cette valeur est contrôlée par l’attribut tombstoneLifetime de l’objet suivant (dans mon cas le domaine s’appelle TPHAT.INTRA) :
CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=tphat,DC=intra

Cas 2 : La corbeille Active Directory est activée :
Quand la corbeille Active Directory est activée, un objet ayant été supprimé peut avoir deux états :
– Deleted : dans ce mode, tous les attributs de l’objet sont conservés. Par défaut l’objet reste dans ce mode pendant une période de temps égale à la TombstoneLifeTime
– Recycled : dans ce mode, tous les attributs non systèmes sont supprimés (attributs autres que ObjectSID). En fait ce mode correspond à l’état Tombstone d’un objet quand la corbeille Active Directory n’est pas activée. Au bout de la période de TombstoneLifeTime, l’objet est réellement supprimé de l’annuaire.
Avec la corbeille Active Directory si la TombstoneLifeTime est de 180 jours, un objet est réellement supprimé au bout de 360 jours. Pour plus d’informations :
http://windowsitpro.com/windows-server-2008/revive-deleted-ad-objects-active-directory-recycle-bin

4. COMMENT RESTAURER LES COMPTES UTILISATEURS DANS UN ANNUAIRE ACTIVE DIRECTORY SANS LA CORBEILLE ACTIVE DIRECTORY ?
Il existe deux méthodes pour restaurer un compte utilisateur :
– Méthode 1 : la restauration autoritaire Active Directory avec l’outil NTDSUTIL : cette procédure consiste à restaurer un contrôleur de domaine. Pour cela il faut  redémarrer le contrôleur de domaine en mode Restauration des services d’annuaires. Une fois la restauration terminée, il faut lancer l’outil NTDSUTIL et incrémenter le numéro d’USN du compte utilisateur. Cette seconde action est nécessaire car en cas de restauration non autoritaire, le compte utilisateur serait supprimé dès que le contrôleur de domaine restauré répliquerait avec les autres contrôleurs de domaine. Cette technique fonctionne mais s’avère complexe et entraîne une indisponibilité du contrôleur de domaine. En mode restauration des services d’annuaires (DSRM), ce dernier n’authentifie plus les utilisateurs. De plus, il faut restaurer les appartenances aux groupes via l’importation d’un fichier LDIF.
– Méthode 2 : réanimation du compte utilisateur (tombstone reanimation) : cette action peut être effectué à l’aide de l’outil AdRestore (http://technet.microsoft.com/en-us/sysinternals/bb963906.aspx) ou en applicant le chapitre « How to manually undelete objects in a deleted object’s container » de l’article Microsoft http://support.microsoft.com/kb/840001/en-us.

5. COMMENT RESTAURER LES COMPTES UTILISATEURS DANS UN ANNAIRE ACTIVE DIRECTORY AVEC LA CORBEILLE ACTIVE DIRECTORY :
Pour rappel, la forêt doit être en mode natif et la fonctionnalité de la corbeille Active Directory doit avoir été activée (action irréversible).
Pour cela, taper la commande suivante (exemple avec le domaine tphat.intra) :
Enable-ADOptionalFeature –Identity ‘CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration, DC=tphat,DC=intra -Scope ForestOrConfigurationSet -Target ‘tphat.intra’
Avec Windows 2008 R2, il faut utiliser la commande PowerShell Restore-ADobject pour restaurer un compte utilisateur.  Voir la procédure Microsoft : http://technet.microsoft.com/fr-fr/library/dd379509(v=ws.10).aspx
Il existe aussi des outils gratuits qui permettent d’effectuer cette action comme ADRecycleBin (gratuit). Cet outil est téléchargeable à l’adresse suivante : http://www.overall.ca/index.php?option=com_content&view=article&id=40:adrecyclebin&catid=15:adrecyclebinexe&Itemid=64
Sous Windows 2012, la console Active Directory Administrative Center intègre un assistant pour restaurer les objets avec la corbeille Active Directory.

A+
Guillaume MATHIEU
Consultant PROSERVIA
La connaissance s’accroit quand on la partage

Publié dans Active Directory, Sécurité, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2 | Laisser un commentaire

Migrer les serveurs d’espace de noms (DFS) de Windows 2003 vers Windows 2008 R2

Salut à tous, vous trouverez ci dessous quelques retours d’expériences sur le service DFS de Microsoft.

1. PRESENTATION DE L’ENVIRONNEMENT EXISTANT :
L’architecture existante se compose de :
– Un domaine appelé MSREPORT.INTRA géré par deux contrôleurs de domaine Windows 2003 Server R2 Standard (MSREPORTDC1 et MSREPORTDC2).
– Deux serveurs de fichiers Windows 2003 R2. MSREPORTFILE1 et MSREPORTFILE2.
– Deux serveurs d’espace de noms  de domaine gérés par deux serveurs Windows 2003 R2 Enterprise Edition (MSREPORTDFS1 et MSREPORTDFS2). Ces deux serveurs d’espace de noms gèrent les deux espaces de noms suivants :
Services : espace de noms DFS
Commerces : cible DFS vers \\MSREPORTFILE1\commerces
Informatique : cible DFS vers \\MSREPORTFILE2\informatique
Vente : cible DFS vers \\MSREPORTFILE1\vente
Projets : espace de noms DFS
Projets2013 : cible DFS vers \\MSREPORTFILE1\Projets2013
Projets2012 : cible DFS vers \\MSREPORTFILE2\Projets2012
Projets2011 : cible DFS vers \\MSREPORTFILE2\Projets2011
Les fichiers sont hébergés sur MSREPORTFILE1 ou MSREPORTFILE2. La fonctionnalité de réplication du DFS n’est pas utilisée (que cela soit avec le moteur de réplication DFS-R ou avec le moteur de réplication NTFRS).
La fonctionnalité d’espace de noms liés n’est pas utilisé. http://support.microsoft.com/kb/954091/en-us http://support.microsoft.com/kb/945222/en-us

2. OBJECTIFS :
Ce document a pour objectifs :
– De présenter le service d’espace de noms DFS de Microsoft.
– De présenter la procédure pour remplacer les serveurs d’espace de noms Windows 2003 MSREPORTDFS1 et MSREPORTDFS2 par deux nouveaux serveurs Windows 2008 R2 MSREPORTDFS3 et MSREPORTDFS4.

3. PRESENTATION DU SERVICE DFS :
Les serveurs d’espace de noms DFS gèrent la topologie DFS, c’est-à-dire l’arborescence de dossiers. Afin de disposer d’un service hautement disponible, il faut toujours configurer un espace de noms avec deux serveurs d’espace de noms.
Un espace de noms est composé de cibles DFS. Les cibles DFS redirigent les utilisateurs vers les données situées sur les serveurs de fichiers (dans notre cas MSREPORTFILE1 et MSREPORTFILE2).
Une cible DFS peut avoir un ou plusieurs serveurs de réplicas. Un réplica est un serveur qui contient les données partagés. Quand une cible DFS est configurée avec au moins 2 réplicas, les données répliquent entre les deux serveurs de réplicas à l’aide d’un des deux moteurs de réplications DFS (NTFRS ou DFS-R). Si les données sont modifiées sur un réplica par les utilisateurs, les changements sont répliqués sur les autres réplicas.

Il existe deux consoles pour gérer les espaces de noms sous Windows :
– La console Distributed File System : cette console est disponible sous Windows 2000, 2003 et 2003 R2. Elle n’existe pas sous Windows 2008 et ultérieur.
– La console DFS Management : cette console existe sous Windows 2003 R2 et ultérieur.

Il existe deux moteurs pour répliquer les cibles DFS :
– Le moteur NTFRS : il s’agit du moteur historique de réplication du service de fichiers DFS. Ce mode de réplications est compatible avec des serveurs d’espace de noms Windows 2000, 2003, 2003 R2 et 2008. Il n’est pas compatible avec les serveurs d’espace de noms Windows 2008 R2 (http://msdn.microsoft.com/en-us/library/ff384840(v=vs.85).aspx). Ce moteur de réplication est utilisé quand on active plusieurs réplicas pour une même cible depuis la console Distributed File System (les données de la cible sont synchronisées entre les deux serveurs réplicas). Le moteur de réplication NTFRS est peu fiable.  Si un fichier est modifié, il est intégralement recopié sur les autres serveurs de réplicas (réplication non optimale). Il est possible de configurer les heures où la réplication est autorisée.
– Le moteur DFS-R : ce moteur de réplication est apparu avec Windows 2003 R2. Il est beaucoup plus fiable que NTFRS. Les fichiers sont découpés en blocs. Seuls les blocs modifiés sont répliqués en cas de changement. Il est possible d’optimiser le trafic de réplication en définissant les heures où la réplication est autorisée et le débit maximum. Les serveurs de fichiers doivent être sous Windows 2003 R2 pour pouvoir activer le nouveau moteur de réplication DFS-R. Il est en effet nécessaire d’installer le service Réplication DFS sur les serveurs de fichiers. Dans le cas contraire, on a un message d’erreur quand on essaie d’utiliser un serveur antérieur à Windows 2003 R2 comme serveur de réplica supplémentaire pour une cible DFS « The following targets cannot be added as DFS replication members – The DFS replication is not installed ».

Il y a deux modes pour les espaces de noms DFS de domaine  :
– Les espaces de noms DFS Windows 2000 : ce type d’espace de noms peut être géré par des serveurs d’espace de noms sous Windows 2000, 2003, 2003 R2, 2008 et 2008 R2. – Les espaces de noms DFS Windows 2008 : ce type d’espace de noms peut être géré que par des serveurs d’espaces de noms Windows 2008 et ultérieur. Ce type d’espace de noms nécessite que le domaine Active Directory soit en mode natif 2008 ou ultérieur.

La fonctionnalité d’Access Based Enumeration permet de masquer les répertoires auxquels les utilisateurs n’ont pas accès (message Accès refusé). Elle n’est disponible qu’avec les espaces de noms DFS Windows 2008.

Pour plus d’informations sur le service DFS Microsoft :
http://technet.microsoft.com/fr-fr/library/ee404780(v=WS.10).aspx
http://social.technet.microsoft.com/Forums/fr-FR/winserverfiles/thread/d9232edf-8975-4125-b6cb-c204b565dfe3 http://support.microsoft.com/kb/977511/en-us

4. PROCEDURE DE MIGRATION DES SERVEURS D’ESPACE DE NOMS WINDOWS 2003 R2 VERS WINDOWS 2008 R2 :
Pour effectuer cette action, vous devez travailler avec un compte utilisateur qui est membre du groupe Domain Admins ou Enterprise Admins. Pour plus d’informations, voir : http://technet.microsoft.com/fr-fr/library/ee404780(v=WS.10).aspx

4.1 ETAPE 1 : SAUVEGARDE DE VOS ESPACES DE NOMS :
Il est important de sauvegarder les deux espaces de noms afin de pouvoir faire un retour arrière en cas de problèmes. Pour sauvegarder un espace de noms de domaine, il faut installer l’outil DFSUTIL (installer les supports tools sur le CD d’installation 1 de Windows 2003 R2) et entrer les commandes suivantes sur MSREPORTDFS1 et MSREPORTDFS2 : dfsutil /root:\\msreport.intra\Services /export:c:\Services-dfs.txt dfsutil /root:\\msreport.intra\Projets /export:c:\Projets-dfs.txt
Pour plus d’informations : http://blogs.technet.com/b/craigf/archive/2010/09/20/backing-up-and-restoring-domain-based-dfs-namespaces.aspx
http://support.microsoft.com/kb/969382

4.2 ETAPE 2 : PREPARER LES SERVEURS MSREPORTDFS3 ET MSREPORTDFS4
Windows 2003 R2 nécessite une mise à jour pour gérer plusieurs espaces de noms. http://support.microsoft.com/kb/903651/en-us Cette contrainte n’existe plus sous Windows 2008 R2.
On peut donc utiliser une version Standard de Windows 2008 R2 pour les serveurs d’espace de noms. http://technet.microsoft.com/fr-fr/library/ee307957(v=ws.10).aspx

Installer les mises à jour suivantes sur les serveurs d’espaces de noms MSREPORTDFS3 et MSREPORTDFS4 (Windows 2008 R2) :
– KB 2761922
– KB 2647452
– KB 2780453 v2
– KB 2663685
– KB 975763
– KB 968429

Remarque : – Si vous disposez de clients Windows XP, il recommandé d’installer le service pack 3 qui intègre de nombreux correctifs pour le service DFS : http://support.microsoft.com/kb/946480/fr

Configurer votre antivirus pour exclure de l’analyse temps réel les répertoires / fichiers utilisés par le service DFS : http://support.microsoft.com/kb/822158/fr

4.3 ETAPE 3 : VERIFIER LE BON FONCTIONNEMENT DE L’ESPACE DE NOMS DFS :
Entrer la commande suivante pour valider le bon fonctionnement des deux espaces de noms :
Dfsdiag /testdfsintegrity /DfsRoot:\\msreport.intra\Services /recurse /full
Dfsdiag /testdfsintegrity /DfsRoot:\\msreport.intra\Projets /recurse /full
La commande doit renvoyée les éléments suivants :
Success : No known corruption is found is the DFS metadata
Success : DFS metadata is consistent across all accessible domain controllers and the PDC Emulator.
Success : Registry information on namespace servers is consistent with the metadata in Active Directory Domain Services.

ETAPE 4 : AJOUTER LES DEUX SERVEURS D’ESPACE DE NOMS WINDOWS 2008 R2 :
Lancer la console Server Manager sur MSREPORTDFS3 et MSREPORTDFS4. Cliquer sur Add roles. Sélectionner File Services puis le service de rôle Distributed File System (prendre tous les composants). Ne pas créer d’espace de noms à cette étape.
Lancer la console DFS Management sur MSREPORTDFS3 Faire un clic droit sur Namespaces et sélectionner Add namespaces to Display. Ajouter les deux espaces de noms (Services et Projets).
Cliquer ensuite sur chaque espace de noms. Aller dans l’onglet Namespace Servers. Cliquer sur ajouter un serveur d’espace de noms. Dans la fenêtre « Add Namespaces server », sélectionner MSREPORTDFS3 puis cliquer sur OK. Faire la même action pour MSREPORTDFS4.
Ne pas supprimer les anciens serveurs d’espace de noms à cette étape ! Il existe en effet un mécanisme de cache au niveau du client DFS. Hors les nouveaux serveurs d’espace de noms DFS ne sont pas dans le cache des clients DFS. Si un serveur d’espace de noms n’est plus disponible, les clients basculent automatiquement sur un autre serveur d’espace de noms. Mais il faut pour cela que les nouveaux serveurs d’espace de noms soient connus des clients.
Pour visualiser le cache DFS sur les clients DFS (stations de travail Windows XP / Windows 7),  entrer une des deux commandes suivantes :
dfsutil /pktinfo
dfsutil /DisplayMupCache
Pour purger le cache DFS, entrer une des deux commandes suivantes :
dfsutil /pktflush
dfsutil /PurgeMupCache
Par défaut la valeur du cache DFS est de 300 secondes (5 minutes). Cette valeur peut se configurer au niveau des propriétés de chaque espace de noms.

Pour plus d’informations : http://blogs.technet.com/b/filecab/archive/2006/01/20/417832.aspx http://blogs.technet.com/b/josebda/archive/2009/07/15/five-ways-to-check-your-dfs-namespaces-dfs-n-configuration-with-the-dfsdiag-exe-tool.aspx

ETAPE 5 : REDEMARRER LE SERVICE D’ESPACE DE NOMS DFS SUR MSREPORTDFS1 ET MSREPORTDFS2 :
Pour rappel, la configuration d’un espace de noms DFS de domaine se trouve dans l’annuaire Active Directory (dans le conteneur System de la partition de domaine). Cependant chaque serveur d’espace de noms recopie cette configuration dans sa base de registre. Pour actualiser les entrées de la base de registre pour prendre en compte les nouveaux serveurs d’espace de noms immédiatement, il faut redémarrer le service d’espace de noms DFS sur MSREPORTDFS1 et MSREPORTDFS2. Attendre que le service d’espace de noms de MSREPORTDFS1 est  redémarré avant de redémarrer celui de MSREPORTDFS2 pour ne pas générer un arrêt de production côté client.

ETAPE 6 : SUPPRIMER MSREPORTDFS1 ET MSREPORTDFS2 EN TANT QUE SERVEUR D’ESPACE DE NOMS POUR LES ESPACES DE NOMS \\MSREPORT.INTRA\SERVICES ET \\MSREPORT.INTRA\PROJETS :
Il est préférable d’attendre 30 minutes entre l’étape 5 et 6 (bien que 5 minutes soient théoriquement suffisant). Lancer la console DFS Management. Faire un clic droit sur Namespaces et sélectionner Add namespaces to Display. Ajouter les deux espaces de noms (Services et Projets).
Cliquer ensuite sur chaque espace de noms. Aller dans l’onglet Namespace Servers. Sélectionner MSREPORTDFS1 puis cliquer sur Delete. Sélectionner MSREPORTDFS2 puis cliquer sur Delete. Redémarrer le service d’espace de noms sur MSREPORTDFS3 et MSREPORTDFS4 (un par un).

5. LES PROBLEMES CONNUS :
Quand on gère un serveur d’espace de noms DFS en mode Windows 2000 depuis un serveur Windows 2008 R2, le message d’erreur suivant peut apparaître : Msreport.intra\Services : Properties cannot be set on the folder. The request is not supported.
Msreport.intra\Projets : Properties cannot be set on the folder. The request is not supported.
Pour plus d’informations : http://support.microsoft.com/kb/973122/en-us

6. LE PLAN DE RETOUR ARRIERE :
Pour effectuer un retour arrière, il faut supprimer les espaces de noms. Faire une sauvegarde d’au moins deux contrôleurs de domaine Active Directory avant d’appliquer cette procédure (disque système et composant Etats du système).

Pour supprimer un espace de noms :
Aller dans la console DFS Management. Sélectionner l’espace de noms et cliquer sur Delete.
Si cela n’est pas possible via cette interface, lancer la console Active Directory Users and Computers. Aller dans le menu View et de sélectionner Show advanced features.
Aller dans le conteneur System | DFS Configuration. Chaque espace de noms est en fait un objet fTDfs. Supprimer l’objet fTDfs appelé Services et Projets.

Créer de nouveau les espaces de noms DFS Projets et Services via la console DFS Management. Restaurer tous les paramètres de l’espace de noms (cibles, groupe de réplication…) en exécutant les commandes suivantes : dfsutil /root:\\msreport.intra\Services /import:c:\Services-dfs.txt /merge dfsutil /root:\\msreport.intra\Projets /import:c:\Projets-dfs.txt /merge
La commande doit renvoyé le résultat suivant :
Links : Added XX Deleted XX Modified XX
Targets : Added XX Deleted XX Modified XX
Root : Attributes Modified XX
Done processing this command.

A+
Guillaume MATHIEU
Consultant PROSERVIA
La connaissance s’accroît quand on la partage

Publié dans Active Directory, Annuaire, DFS, Système, Windows 2003 Server, Windows Server 2008, Windows Server 2008 R2, Windows Seven, Windows Vista, Windows XP | Laisser un commentaire