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.

importantImportant :
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 :

  1. 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.

  2. 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.

  3. 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.

  1. 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."
    
  2. 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

  1. À l'invite de commandes, tapez ldifde.exe -i -f C:\ldifout.ldf, puis appuyez sur ENTRÉE.

  2. Ouvrez les Utilisateurs et ordinateurs Active Directory.

  3. 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

  1. Démarrez l'environnement de ligne de commande Exchange Management Shell.

  2. 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"
    
  3. Répétez l'étape 2 pour toute base de données de boîtes aux lettres supplémentaire située sur le serveur.

  4. 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.

  5. Redémarrez le service Banque d'informations Exchange (MSExchangeIS).

  6. 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.