Suite au billet de David voyons comment mettre tout cela en place !
La première étape va consister à diviser votre organisation (virtuelle)
Pour cela vous avez un certain nombre d’options à votre disposition, qui consiste à :
- Créer des OU dans votre AD pour séparer les utilisateurs

Ici sous utilisateurs j’ai créé des OU par société
- Personnaliser les attributs LDAP d’un objet « mail enabled »
En règle générale nous utiliserons les attributs de l’onglet organisation d’un objet mail enabled : Société, Département ou encore Region.

Ou encore les attributs personnalisés (vous en avez 15 pour faire ce que vous voulez !)

(Onglet General > Attributs personnalisés)
Maintenant comment mettre cela en place rapidement ?
2 méthodes :
Si vous avez une faible population de personnes vous pouvez mettre à jours les attributs à la main.
Si vous avez un nombre d’utilisateurs important, ou que vous aimez gagner du temps ! PowerShell est là :) il faudra sélectionner les bon utilisateurs (grâce aux OU) puis mettre à jour les attributs
Get-Mailbox -OrganizationalUnit ‘NomDeLOU’ | Set-User -Company ‘CeQueVousVoulez’
Get-Mailbox -OrganizationalUnit ‘NomDeLOU’ | Set-User -Department ‘CeQueVousVoulez’
Simple non ?
Ici nous avons pris tous les objets mail enabled de l’OU NomDeLOU et nous avons changé l’attribut Société (company) ou encore le Service (department) avec le nom de la société que vous voulez
Petite différence pour les attributs personnalisés nous utiliserons Set-Mailbox (avec CustomAttributeX ou X est compris entre 1 et 15)
Get-Mailbox -OrganizationalUnit ‘NomDeLOU’ | Set-Mailbox -CustomAttribute1 ‘CeQueVousVoulez’
Il vous reste à répéter le process pour toutes les sociétés que vous voulez mettre en place.
Maintenant nous avons un attribut ou des attributs nous permettant de filtrer nos utilisateurs.
La deuxième étape va consister à créer les AL (Address List), les GAL (Global Address List) et les OAB (Offline Address Book)
Ici il est recommandé d’utiliser des vrai filtres LDAP donc PowerShell uniquement pas de EMC (la console) possible :p (l’exemple est sur une installation française, il faudra adapter « -Container » en fonction de votre langue d’installation)
On commence par les AL Classique, nous allons créer :
1 AL pour tous les Utilisateurs et les Listes de distribution
New-AddressList -Name “AL_Societe1_Users_DGs” -RecipientFilter {(((RecipientType -eq ‘UserMailbox’) -or (((RecipientType -eq ‘MailUniversalDistributionGroup’) -or (RecipientType -eq ‘MailUniversalSecurityGroup’) -or (RecipientType -eq ‘MailNonUniversalGroup’) -or (RecipientType -eq ‘DynamicDistributionGroup’))))) -and (Company -eq ‘Societe1′)} -Container ‘\Tous les utilisateurs’ -DisplayName ‘Tous les utilisateus Societe1′
Update-AddressList ‘AL_Societe1_Users_DGs’
1 AL pour les contacts
New-AddressList -Name “AL_Societe1_Contacts” -RecipientFilter {((RecipientType -eq ‘MailContact’) -and (Company -eq ‘Societe1′))} -Container ‘\Tous les contacts’ -DisplayName ‘Tous les contacts Societe1′
Update-AddressList ‘AL_Societe1_Contacts’
1 AL pour les salles (mailbox de type ressource) obligatoire si vous n’en avez pas il faudra en créer une blank !
Pour la version vide
New-AddressList -Name AL_BlankRoom -RecipientFilter {((Alias -ne $null) -and ((RecipientDisplayType -eq ‘ConferenceRoomMailbox’) -or (RecipientDisplayType -eq ‘SyncedConferenceRoomMailbox’)))} -Container ‘\Toutes les salles’ -DisplayName ‘Toutes les salles Societe1′
Update-AddressList ‘AL_BlankRoom’
Pour la version non vide
New-AddressList -Name “AL_Societe1_Rooms” -RecipientFilter {(Alias -ne $null) -and (Company -eq ‘Societe1′) -and (RecipientDisplayType -eq ‘ConferenceRoomMailbox’) -or (RecipientDisplayType -eq ‘SyncedConferenceRoomMailbox’)} -Container ‘\Toutes les salles’ -DisplayName ‘Toutes les salles Societe1′
Update-AddressList ‘AL_Societe1_Rooms’
1 GAL
New-GlobalAddressList -Name “Global Address List Societe1″ -RecipientFilter {(Company -eq ‘Societe1′)}
1 OAB
New-OfflineAddressBook -Name “OAB_Societe1″ -AddressLists “Global Address List Societe1″
Il vous reste à répéter le process pour toutes les sociétés que vous voulez mettre en place.
La troisième étape va consister à créer les ABP (Address Book Policies)
Pour la version sans room
New-AddressBookPolicy -Name “ABP_Societe1″ -AddressLists “AL_Societe1_Users_DGs”,”AL_Societe1_Contacts” -OfflineAddressBook “\OAB_Societe1″ -GlobalAddressList “\Global Address List Societe1″ -RoomList “\Toutes les salles\AL_BlankRoom”
Pour la version avec room
New-AddressBookPolicy -Name “ABP_Societe1″ -AddressLists “AL_Societe1_Users_DGs”,”AL_Societe1_Contacts” -OfflineAddressBook “\OAB_Societe1″ -GlobalAddressList “\Global Address List Societe1″ -RoomList “\Toutes les salles\AL_Societe1_Rooms”
Il vous reste à répéter le process pour toutes les sociétés que vous voulez mettre en place.
Et la quatrième et dernière étape va consister a appliquer la policy aux utilisateurs
Get-Mailbox -OrganizationalUnit ‘NomDeLOU’ | Set-Mailbox -AddressBookPolicy “ABP_Societe1″
Il vous reste à répéter le process pour toutes les sociétés que vous voulez mettre en place.
Pour verifier :
Get-Mailbox -OrganizationalUnit ‘NomDeLOU’ | fl Name,AddressBookPolicy
Il faudra ensuite fermer le client de l’utilisateur s’il est en train d’utiliser Outlook !
TRES IMPORTANT : Cela ne fonctionne pas si votre serveur exchange fait aussi DC et sur tout Global Catalogue car à ce moment-là c’est Name Service Provider Interface (NSPI) et non Microsoft Exchange Address Book service qui est utilisé pour les recherches ! (NSPI passe au-dessus des ABP)
EDIT (09/12/11) : suite au message de Julien Ohayon qui m’a remonté un problème de typo due à la réinterprétation du code par WordPress du code PowerShell je vous joint une capture d’écran et un fichier txt avec les commandes.


Le fichier texte
https://skydrive.live.com/redir.aspx?cid=2baad2dff0402075&resid=2BAAD2DFF0402075!1024&parid=2BAAD2DFF0402075!114
Pour toutes questions n’hésitez pas.
Anthony COSTESEQUE