Procédure de génération des comptes Active Directory à l'aide des informations de boîte aux lettres dans la base de données de boîtes à lettres
S’applique à : Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007
Dernière rubrique modifiée : 2007-04-26
Les boîtes aux lettres Exchange sont constituées de deux composants :
Compte d'utilisateur de service d'annuaire Active Directory.
Les données de boîte aux lettres sont enregistrées dans la base de données de boîtes aux lettres Exchange.
Les données qui sont enregistrées dans la base de données incluent un nombre limité d'informations sur le compte d'utilisateur auquel la boîte aux lettres est associée. Dans un scénario d'urgence où la base de données Active Directory est perdue et qu'aucune sauvegarde Active Directory ou d'état du système de vos contrôleurs de domaine n'est disponible, il est possible de créer à nouveau les comptes utilisateurs à l'aide des informations enregistrées dans la base de données de boîtes aux lettres. Dans Microsoft Exchange Server 2003 et Exchange 2000 Server, cette tâche est réalisée à l'aide de l'outil Reconnexion de boîtes aux lettres (Mbconn.exe). Pour plus d'informations sur l'utilitaire Mbconn.exe, consultez l'article 271886 de la Base de connaissances Microsoft, Procédure d'utilisation de l'utilitaire Mbconn pour générer des comptes Active Directory pour les boîtes aux lettres de la banque d'informations.
Comme vous ne pouvez pas utiliser Mbconn.exe avec Exchange Server 2007, vous devez utiliser les scripts d'environnement de ligne de commande Exchange Management Shell pour rassembler les données nécessaires à partir des boîtes aux lettres déconnectées. Vous pouvez alors enregistrer les données dans un fichier LDIF (Data Interchange Format) LDAP (Lightweight Directory Access Protocol), qui peut être importé dans Active Directory. Pour importer le fichier LDIF vers Active Directory, vous devez utiliser l'outil LDIFDE (LDAP Data Interchange Format Data Exchange). L'outil LDIFDE est installé par défaut sur un ordinateur exécutant Microsoft Windows Server 2003.
Cette rubrique explique comment utiliser les scripts d'environnement de ligne de commande Exchange Management Shell et l'outil LDIFDE pour générer des comptes utilisateurs Active Directory perdus à l'aide des informations de boîte aux lettres enregistrées dans les bases de données de boîtes aux lettres.
Important : |
---|
Le script dans cette procédure est un exemple. Vous pouvez utiliser le script tel quel mais vous pouvez également le modifier pour satisfaire aux besoins de votre organisation. |
Avant de commencer
Pour exécuter cette procédure, vous devez utiliser un compte auquel ont été délégués :
le rôle Administrateur des destinataires Exchange ;
le rôle Opérateur de compte pour les conteneurs Active Directory applicables.
Pour plus d'informations sur les autorisations, la délégation de rôles et les droits requis pour administrer Exchange 2007, consultez la rubrique Considérations relatives aux autorisations.
En outre, avant d'exécuter cette procédure, confirmez ce qui suit :
Un serveur Exchange 2007 avec le rôle serveur de boîtes aux lettres a été installé.
Les bases de données de la boîte aux lettres d'Exchange 2007 ont été restaurées et montées sur ce serveur.
Une forêt Active Directory a été créée.
Aucun compte d'utilisateur correspondant aux boîtes aux lettres des bases de données de boîte aux lettres restaurées n'existe dans la nouvelle forêt Active Directory.
Procédure
La procédure de génération des comptes utilisateurs à partir des données de boîtes aux lettres comprend les étapes suivantes :
Les scripts de l'environnement de ligne de commande Exchange Management Shell permettent de regrouper les données nécessaires à partir des boîtes aux lettres déconnectées, puis de les enregistrer dans un fichier LDIF. Cette étape est décrite dans la première procédure.
L'outil LDIFDE permet d'importer le fichier LDIF vers Active Directory, qui génère les comptes utilisateurs dans Active Directory. Cette étape est décrite dans la deuxième procédure.
L'environnement de ligne de commande Exchange Management Shell permet de connecter toutes les boîtes aux lettres aux comptes utilisateurs générés par l'importation du fichier LDIF vers Active Directory. Cette étape est décrite dans la troisième procédure.
Notes
Toutes les étapes de cette rubrique doivent être exécutées sur le serveur Exchange qui héberge les données de boîtes aux lettres restaurées.
Utilisation des scripts de l'environnement de ligne de commande Exchange Management Shell pour regrouper les données nécessaires à partir des boîtes aux lettres déconnectées, puis les enregistrer dans un fichier LDIF pour l'importation vers Active Directory.
Le script suivant permet de regrouper les données nécessaires à partir des boîtes aux lettres déconnectées, puis de les enregistrer dans un fichier LDIF. Copiez le code suivant dans un fichier texte appelé CreateLdifFromDisconnectedMailboxes.ps1, puis enregistrez le fichier dans le dossier Scripts se trouvant dans le dossier d'installation d' Exchange. Dans une installation classique, il s'agit de C:\Program Files\Microsoft\Exchange Server\Scripts.
Param( [string] $ContainerDN, [string] $Database = "", [bool] $append = $false ) #function to validate input parameters function ValidateParams { $validInputs = $true $errorString = "" if ($ContainerDN -eq "") { $validInputs = $false $errorString += "`nMissing Parameter: The -ContainerDN parameter is required. Please pass in a valid container in which to create the user accounts." } if (!$ContainerDN.Contains(",")) { $validInputs = $false $errorString += "`nInvalid Container DN. Make sure to enclose the entire DN in double quotes or it will not be parsed properly." } if (!$validInputs) { Write-error "$errorString" } return $validInputs } #function to get the display name and alias from mailbox data in the Exchange store function ExtractDisplayNameAndAlias($obj) { [string[]]$legacyDNSplit = $obj.LegacyDN.Split('/') $alias = $legacyDNSplit[$legacyDNSplit.Length-1].Remove(0,3).ToLower() $output = "dn: CN=" + $obj.DisplayName + "," + $ContainerDN + "`r`nchangetype: add`r`nuserAccountControl: 544`r`nmsExchUserAccountControl: 0`r`npwdLastSet: -1`r`ndisplayName: " + $obj.DisplayName + "`r`nobjectClass: user`r`nsAMAccountName: " + $alias + "`r`n" write-output $output | out-file -filePath "c:\ldifout.ldf" -append -noClobber } # Function that returns true if the incoming argument is a help request function IsHelpRequest { param($argument) return ($argument -eq "-?" -or $argument -eq "-help"); } # Function that displays the help related to this script following # the same format provided by get-help or <cmdletcall> -? function Usage { @" NAME: CreateLdifFromDisconnectedMailboxes.ps1 SYNOPSIS: Finds all disconnected mailboxes on the local server and creates an LDIF file with an entry for each disconnected mailbox user. Use the LDIFDE utility to import this LDIF file to Active Directory, which generates the user accounts. You can then reconnect Mailboxes to these accounts by using the Connect-Mailbox cmdlet. You can specify a particular database, or specify no database to search all databases on the local server. This script is mainly used for disaster recovery scenarios where all data except the mailbox databases have been lost. In these scenarios, without a backup of Active Directory, you must re-create the user accounts so they can be connected to existing mailboxes. This is the main objective of this script. SYNTAX: CreateLdifFromDisconnectedMailbox -ContainerDN <AD Container DN> -Database <Identity of Database> -Append `$false|`$true AD Container DN is a valid Active Directory container in distinguished name format. This value must be enclosed in quotes. Database is the Identity parameter of the database. You can retrieve the Identity value for all databases on the local server by running the following cmdlet: get-mailboxdatabase -server Server01 | fl Identity Setting -append to `$true tells the script to append data to the current c:\ldifout.ldf file instead of overwriting it. This is the recommended setting if you are piping output from other cmdlets to this script. If the -append switch is not included, the script runs automatically in overwrite mode. EXAMPLES: "Specifying Database ID" CreateLdifFromDisconnectedMailbox -ContainerDN "CN=Users,DC=Domain,DC=com" -Database "SERVER\Storage Group\Database" "Run Against All Stores on Local Server" CreateLdifFromDisconnectedMailbox -ContainerDN "CN=Users,DC=Domain,DC=com" "Pipe output of another cmdlet into this script" get-mailboxdatabase -server SERVER | foreach {CreateLdifFromDisconnectedMailboxes -ContainerDN "CN=Users,DC=domain,DC=com" -Database `$_.Identity -append `$true} "@ } ################################################################ ##########################BEGIN SCRIPT########################## ################################################################ #Check if this is a help request $args | foreach { if (IsHelpRequest $_) { Usage; exit; } } #Delete existing LDIF file if it is there and append is set to false if(!$append){$a = remove-item c:\ldifout.ldf -ea SilentlyContinue} #Validate all input parameters $ifValidParams = ValidateParams; if (!$ifValidParams) { exit; } #find all disconnected mailboxes and get required information if ($Database -ne "") { write "Getting disconnected mailboxes for database $Database" $getmbxcmd = get-mailboxstatistics -Database $Database | where {$_.DisconnectDate -ne $null} } else { write "Getting disconnected mailboxes for all databases on local server." $getmbxcmd = get-mailboxstatistics | where {$_.DisconnectDate -ne $null} } #Make sure at least one disconnected mailbox is found; if not, exit script if ($getmbxcmd -eq $null) {write "No disconnected mailboxes found.";exit} #loop through each disconnected mailbox and write entries to the output file foreach ($entry in $getmbxcmd) { ExtractDisplayNameAndAlias $entry } write "LDIF file successfully written to C:\ldifout.ldf."
Ouvrez l'environnement de ligne de commande Exchange Management Shell, puis exécutez la commande suivante :
CreateLdifFromDisconnectedMailboxes -ContainerDN "<DN of container to place users>"
Important
Le nom unique <du conteneur pour insérer la valeur > des utilisateurs transmise au paramètre ContainerDN doit être le nom unique (DN) d'un conteneur Active Directory valide et doit figurer entre guillemets doubles. Par exemple, pour insérer les nouveaux comptes utilisateur dans l'unité d'organisation (UO) utilisateurs, dans le domaine contoso.com, vous devez utiliser la valeur "CN=Users,DC=contoso,DC=com".
La commande précédente traite toutes les bases de données de boîtes aux lettres sur le serveur sur lequel elle est exécutée. Si vous préférez exécuter le script sur une base de données de boîtes aux lettres spécifique, le paramètre Base de données vous permet de spécifier la base de données souhaitée.
Les données de sortie du script sont enregistrées dans le fichier ldifout.ldf à la racine du disque C. Par défaut, le script remplace ce fichier s'il existe déjà. Vous pouvez également ajouter le script à un fichier existant en définissant le paramètre Ajout sur
$true
.Pour plus d'informations sur la syntaxe utilisée dans le script, exécutez la commande suivante :
CreateLdifFromDisconnectedMailboxes -?
Utilisation de l'outil LDIFDE pour importer le fichier LDIF vers l'Active Directory
À l'invite de commandes, tapez ldifde.exe -i -f C:\ldifout.ldf, puis appuyez sur ENTRÉE.
Ouvrez les Utilisateurs et ordinateurs Active Directory.
Si l'importation est réussie, les utilisateurs doivent apparaître dans le conteneur spécifié lors de l'exécution du script. Si les comptes utilisateur sont présents, exécutez la procédure suivante.
Utilisation de l'environnement de ligne de commande Exchange Management Shell pour connecter des boîtes aux lettres
Démarrez l'environnement de ligne de commande Exchange Management Shell.
Exécutez la commande suivante pour connecter toutes les boîtes aux lettres sur une base de données de boîtes aux lettres spécifique. Cet exemple de commande suppose que vous connectiez toutes les boîtes aux lettres stockées dans la base de données de boîtes aux lettres MBX1, dans le groupe de stockage SG1 sur le serveur Server01 :
Get-MailboxStatistics | Where {$_.DisconnectDate -ne $null} | Connect-Mailbox -Database "Server01\SG1\MBX1"
Répétez l'étape 2 pour toute base de données de boîtes aux lettres supplémentaire située sur le serveur.
Redémarrez le service Admin IIS.
Notes
Si le rôle serveur d'accès au client est installé sur un serveur autre que celui pour lequel vous exécutez l'opération de récupération, redémarrez le service Admin IIS sur ce serveur.
Redémarrez le service Banque d'informations Exchange (MSExchangeIS).
Vérifiez que les utilisateurs peuvent désormais se connecter à leurs boîtes aux lettres.
Si vous rencontrez des problèmes, contactez les services de support technique Microsoft. Pour plus d'informations sur la manière de contacter le support technique, visitez la page Contactez-nous du site Web du centre de support Microsoft.
Pour plus d'informations
Pour en savoir plus sur les récupérations d'urgence dans Exchange 2007, consultez la rubrique Récupération d'urgence.
Pour en savoir plus sur les actions à effectuer pour vous préparer à un incident, consultez la rubrique Meilleures pratiques pour minimiser l'impact d'un incident.
Pour obtenir la procédure détaillée d'utilisation de l'outil Mbconn.exe pour atteindre le même résultat dans Exchange 2003 ou Exchange 2000, consultez l'article 271886 de la Base de connaissances Microsoft, Procédure d'utilisation de l'utilitaire Mbconn pour générer des comptes Active Directory pour les boîtes aux lettres de la banque d'informations.