« Je ne pense jamais au futur. Il vient bien assez tôt.  »

Recherche glossaire

Rechercher dans les définitions (terme ou expression)
Commence par Contient Terme exactSe prononce comme

Traduction

frendeitptes
Warning
  • JFolder::files : le chemin n'est pas un répertoire. Chemin : images/Badges
Print Friendly, PDF & Email

Vote utilisateur: 5 / 5

Etoiles activesEtoiles activesEtoiles activesEtoiles activesEtoiles actives
 

Mutualisation d'Exchange

Certaines de mes connaissances m'ont demandé de réfléchir sur la possibilité de mutualisé un serveur de messagerie. L'objectif étant de n'avoir qu'un seul serveur de messagerie hébergeant des boîtes aux lettres de différentes sociétés. Les boîtes aux lettres de chacune des sociétés devront posséder:

  • Sa propre banque
  • Sa propre liste d'adresse globale
  • Sa propre liste d'adresse en mode hors connexion
  • Un groupe de distribution dynamique incluant toutes les boîtes aux lettres de la société concernée

Télécharger le script Powershell "Mutualisation d'Exchange"

De nature à travailler une fois pour toute, j'ai cherché à optimiser le processus de création des boîtes aux lettres.

Je me suis tout naturellement tourné vers Powershell en définissant les différentes étapes nécessaires pour atteindre mon objectif.

Création d'un fichier "Utilisateurs"

La première étape était de définir les attributs des objets à créer dans mon Active Directory. J'ai donc utilisé Excel pour créer la structure du fichier ainsi que la liste de mes utilisateurs à créer. En voici le départ:

displayname;sn;givenname;name;samaccountname;mail;password;domaine;netbiosdomaine
Prenom Nom;Nom;Prenom;Prenom.Nom;Prenom.Nom;Prenom.Nom@test.fr;motdepasse;test.fr;test

Pour rappel, la première ligne défini les différents attributs dont je vais avoir besoin, chaque ligne suivante constitue un futur utilisateur de messagerie

Création du script via la console Powershell-ISE

Sélection du fichier

Mon souhait étant de pouvoir importer les données d'un fichier que l'on m'aurait préalablement remis, je voulais être en mesure de pouvoir le sélectionner indépendamment de son nom et de son emplacement. La fonction suivante permet de sélectionner un fichier de type CSV.

function Select-fichier(){

    $initialDirectory = $home + "\Desktop"

    $seachExt = "fichier csv (*.csv)| *.csv"

    [void] [Reflection.Assembly]::LoadWithPartialName( 'System.Windows.Forms' )

    $fileDialogBox = New-Object Windows.Forms.OpenFileDialog

    $fileDialogBox.ShowHelp = $true

    $fileDialogBox.initialDirectory = $initialDirectory

    $fileDialogBox.filter = $seachExt

    $fileDialogBox.ShowDialog( )

    $fileDialogBox.filename

}

# Note : La valeur filename est la deuxième renvoyé par la fonction d'où le $logFileName[1]

$fichiercsv = Select-fichier

$fichiercsv = $fichiercsv[1]

Exchange dans Powershell-ISE

Powershell-ise ne lisant pas par défaut les comdlets d'Exchange, Il faut y faire appel...

Changez le nom du serveur, !

# importation du module Exchange
        $s = New-PSSession -ConfigurationName Microsoft.Exchange `
        -ConnectionUri http://srv-exc.domaine.local/PowerShell/ `
        -Authentication Kerberos

        Import-PSSession $s

Définition des variables

Vous allez définir ici les variables à partir du fichier csv que vous aurez préalablement importé.

 

Changez l'emplacement par defaut des banques et des logs!!!!

# Importation du fichier .CSV
        $utilisateurs = Import-Csv -path $fichiercsv -delimiter ";"

        #définition des variables
        $domaine = $utilisateurs.netbiosdomaine
        $domaineFQDN = $utilisateurs.domaine
        $servexch = "srv-exc.domaine.local"
        $pathedborg = "D:\Bases\"
        $pathlogorg = "D:\Logs\"
        $pathlog = $pathlogorg +"\" +$domaine +"\"
        $banque = $pathedborg +"\"+ $domaine +"\"+ $domaine + ".edb"
        $chemfich = $HOME + "\Desktop"
        $fileusers = $chemfich + "\" + $domaine + ".csv"
        $offlinebook = $domaine +"OAB"
        $virtualoabfront = $servexch + "\oab (Default Web Site)"
        $virtualoabback = $servexch + "\oab (Exchange Back End)"
        $bookpolicy = $domaine + "ABP"
        $addlist = "\" + $domaine
        $gal = $domaine + "GAL"
        $roomlist = $domaine + "Rooms"
        $AddressTemplates = "SMTP:%s%2g@" + $domaineFQDN

Je ferais appel à toutes ces variables au fur et à mesure du déroulé du script.

Création de l'ou, des utilisateurs

Mon domaine s'appelant rumilly.local, il s'agira de le renommer. J'ai également préalablement créé une unité d'organisation nommé "clients" dans laquelle je créerais toutes les unitées d'organisation correespondantes à mes sociétés

Changez le chemin de l'ou!

$ou = "ou=" +$domaine + ",ou=clients,dc=domaine,dc=local"
        New-ADOrganizationalUnit -Name $domaine -Path "ou=clients,dc=rumilly,dc=local"

# Création de l’utilisateur
cls
foreach($utilisateur in $utilisateurs)
    {
        $pass = $utilisateur.password
        $nom = $utilisateur.sn
        $prenom = $utilisateur.givenname
        $displayname = $utilisateur.displayname
        $name = $utilisateur.name
        $login = $utilisateur.samaccountname
        $mail = $utilisateur.mail
        $password = $utilisateur.password

New-ADUser –name $name –givenname $givenname –surname $sn –displayname $displayname –samaccountname $login –emailaddress $mail –enabled 1 -UserPrincipalName $mail –accountpassword (convertto-securestring $password –asplaintext –force) -Path $ou
echo « Utilisateur $displayname créé »
    }

Création des banques

Je vais ici créer l'arborescence de mes dossiers dans lesquels vont être générer d'une part la banque de la société et d'autre par les logs

# Création de l'arborescence
        New-Item -Path $pathedb\$domaine -ItemType directory
        New-Item -Path $pathlog -ItemType directory

Je créerais ensuite ma banque dont le nom correspond à la société

#Création de la banque
        New-MailboxDatabase -name $domaine -server $servexch -EdbFilePath $banque -LogFolderPath $pathlog
        Invoke-Command -ComputerName $servexch -ScriptBlock {Restart-Service MSExchangeIS}
        Mount-Database -Identity $domaine

Création des boîtes aux lettres

Création du domaine accepté

New-AcceptedDomain -Name $domaineFQDN -DomainName $domaineFQDN -DomainType Authoritative
        New-EmailAddressPolicy -Name $domaineFQDN -IncludedRecipients MailboxUsers -RecipientContainer $ou -EnabledEmailAddressTemplates $AddressTemplates -Priority 1
        Update-EmailAddressPolicy -Identity $domaineFQDN

Activation des boîtes aux lettres se trouvant dont les comptes des utilisateurs se trouvent dans l'unité d'oraganisation de la société concernée.

Création également du groupe de distribution dynamique de la société.

        #Activation des bals pour l'ou
        Get-User -OrganizationalUnit $domaine | Enable-Mailbox -Database $domaine
        Get-Group -OrganizationalUnit $domaine | Enable-DistributionGroup $domaine

        New-DynamicDistributionGroup -Name $domaine -Alias $domaine -IncludedRecipients MailboxUsers -OrganizationalUnit $ou -RecipientContainer $ou

Stratégies et listes d'adresses

# Stratégies et Listes d'adresses pour $domaine

        # Carnet d'adresses pour $domaine
        New-GlobalAddressList -Name $gal -RecipientContainer $domaine
        Update-GlobalAddressList -Identity $gal
        New-AddressList -name $roomlist -RecipientContainer $domaine -IncludedRecipients resources
        New-AddressList -name $domaine -RecipientContainer $domaine -IncludedRecipients mailboxUsers
        New-OfflineAddressBook -Name $offlinebook -AddressLists $domaine
        Update-AddressList $domaine
        Update-AddressList $roomlist
        Set-OfflineAddressBook -Identity $offlinebook -VirtualDirectories $virtualoab, $virtualoabback
        Update-OfflineAddressBook -id $offlinebook
        New-AddressBookPolicy -name $bookpolicy -AddressLists $addlist -OfflineAddressBook $offlinebook -GlobalAddressList $gal -RoomList $roomlist
        Get-Mailbox -OrganizationalUnit $domaine | Set-Mailbox -AddressBookPolicy $bookpolicy

Voila c'est fini!

Prenez le temps de vous imprégner des variabgles citées au début de cet articles et adaptez les en fonctions de vos besons, et...lancez votre script!

Ce dernier vous demandera juste de sélectionner votre fichier contenant les utilisateurs.

Télécharger le script Powershell "Mutualisation d'Exchange"

Vous devez être authentifié pour pouvoir laisser des commentaires...

Print Friendly, PDF & Email