середу, 2 вересня 2009 р.

Exchange 2007 та формат відображуваних імен

-->

Exchange 2007 та формат відображуваних імен.


Джерело: Exchange 2007 & Display Name Format.

Матеріали: Exchange, Exchange 2007, PowerShell, Script, Tools — Amit Tank (2008.08.17)

Автор перекладу і доопрацювання: Олександр Драч (oleksandr.drach[at]gmail.com) (2009.09.02).

Теги:
Active Directory, Exchange, Exchange 2003, Exchange 2007

Зміст

Передмова.

Exchange 2003.

Exchange 2007.

1. Як змінити імена та відображувані імена наявних користувачів, попередньо створених  за допомогою EMC?

2. Що робити, коли існує потреба створювати користувачів/поштові скриньки за допомогою EMC/EMS в правильному форматі?

3. Як бути певним, що нові користувачі/поштові скриньки будуть створені в правильному форматі?

Приклад.

Передмова.


Актуальне питання з’явилося на форумі TechNet в темі “Exchange 2007 & Display Name” – Як змінити формат відображуваного імені з <Ім’я> <Ініціал> <Прізвище> на <Прізвище>, <Ім’я> <Ініціал> під час створення користувачів/поштових скриньок в Exchange 2007?”.

З огляду на специфіку кириличного написання імен дану статтю адаптовано для подання імені та відображуваного імені в форматі <Прізвище> <Ім’я>.

 Спочатку розглянемо Exchange 2003 …

Exchange 2003.

Ми використовуємо засіб “Active Directory – Пользователи и компьютеры” (надалі - ADU&C) для створення користувачів/поштових скриньок. За замовчуванням ім’я та формат відображуваного імені при створенні такі: “<Ім’я> <Ініціал>. <Прізвище>”, але вони можуть змінені на “<Прізвище> <Ім’я>” встановленням атрибуту createDialog об’єкту user-Display гілки CN=DisplaySpecifiers, об’єкту CN=419 (419 – значення для кирилиці, 409 – для англійської мови) в значення “%<sn> %<givenname>” у конфігураційному контекстному меню утиліти ADSIEDIT.msc.

Процедура описана в статті (англійською): “Як змінити відображувані імена користувачів Active Directory”.


Після встановлення значення createDialog під час створення  користувачів/поштових скриньок, коли ми вводимо значення Ім’я, Прізвище та Ініціал, Повне ім’я встановлюється в формат <Прізвище> <Ім’я> автоматично (не потрібно вводити його вручну).


Відображуване ім’я встановлюється в формат повного імені автоматично при створенні  нового користувача.


 Тепер поговоримо про Exchange 2007.



Exchange 2007.

Коли ми створюємо поштову скриньку для нових користувачів в  консолі управління (Exchange Management Console, надалі - EMC) серверу Exchange Server 2007, він не розпізнає значення атрибуту createDialog об’єкту user-Display класу displaySpecifier і залишає ім’я в форматі за замовчуванням <FN> <I> <LN>.

В статті “Зміна відображуваного імені користувачів active directory”(англійською) пояснено, що це зумовлено особливостями і обмеженнями EMC. Обхідний шлях полягає в тому, щоб створювати користувачів за допомогою ADU&C консолі управління MMC і пізніше створювати поштові скриньки для цих користувачів з EMC.
Отже, виникають певні питання…

 1. Як змінити імена та відображувані імена наявних користувачів, попередньо створених  за допомогою EMC?

Нижче наведено приклад, в якому користувачів вже створено в форматі <FN> <I>. <LN> засобами Exchange 2007 – EMC.


Вам не потрібно хвилюватись стосовно зміни кожного імені вручну, адже в пригоді стане PowerShell. Нижче наведено скрипт, котрий змінює імена та відображувані імена всіх користувачів поштових скриньок в формат <LN> <FN>.

Для виконання скриптів PowerShell вам необхідно змінити  параметр Execution Policy в EMS.

Запустіть Exchange Management Shell від імені адміністратора.


Виконайте наведену нижче команду щоб змінити налаштування політики для можливості запуску скриптів ps1.

Set-ExecutionPolicy RemoteSigned 

Тепер збережіть скрипт, поданий нижче, в файл C:\Scripts\Pre-Users.ps1.
=====================Pre-Users.ps1=====================
# Pre-Users.ps1 - Change the name & display name of existing users.
# Created by - Amit Tank
# Modifed by - Oleksandr Drach

$Users = Get-User -ResultSize unlimited | where {$_.RecipientTypeDetails -eq "UserMailbox"}
ForEach ($User in $Users)
{
$DName = $User.LastName + " " + $User.FirstName
$DName = $Dname.Trim()
Set-User $User -Name $DName -DisplayName $DName
Get-User $User | FT Name, DisplayName
$DName = $Null
}



Зайдіть в Management Shell, змініть поточний каталог на C:\Scripts і виконайте щойно створений скрипт командою  ./Pre-Users.ps1.


Отже, тепер всі імена і відображувані імена встановлено в формат <LN> <FN>.

Залежно від формату Кімнат/Спільних поштових скриньок вашої організації, ви можете змінити також і відображувані імена для них. У цьому випадку необхідно змінити рядок, наведений нижче, в залежності від ваших потреб.

$Users = Get-User -ResultSize unlimited | where {$_.RecipientTypeDetails -eq RoomMailbox”}

$Users = Get-User -ResultSize unlimited | where {$_.RecipientTypeDetails-eq SharedMailbox”}

2. Що робити, коли існує потреба створювати користувачів/поштові скриньки за допомогою EMC/EMS в правильному форматі?

EMC:

Візьміть за правило чи запишіть в інструкції по створенню користувачів/поштових скриньок вашої організації, що поле “Ім’я” повинне бути задане в форматі <LN> <FN> вручну (EMC встановлює відображуване ім’я таким же, як і ім’я).

 

EMS:

Аналогічно до EMC, візьміть за правило чи запишіть в інструкції по створенню користувачів/поштових скриньок вашої організації, що поля “Ім’я” і “Відображуване ім’я” повинні бути задані в форматі <LN> <FN> вручну.

New-Mailbox -Alias rzozulya -Database “First Storage Group\Mailbox Database" -Name "Зозуля Роман” -OrganizationalUnit “ad.local/Users” -FirstName "Роман" -LastName "Зозуля" -Initial "В" -DisplayName “Зозуля Роман” -UserPrincipalName rzozulya@ad.local


3. Як бути певним, що нові користувачі/поштові скриньки будуть створені в правильному форматі?

Для цього ви можете запланувати на виконання щодня PowerShell-скрипт, який запускається і  перевіряє поштові скриньки, що були створені протягом останніх 24 годин, і коригує формат якщо потрібно.

Створіть два файли, вміст яких подано нижче, в папці C:\Scripts вашого сервера Exchange.

=============UserName.CMD=============
Powershell -command "& {C:\Scripts\UserName.ps1 }"

=====================UserName.PS1=====================

# UserName.ps1 - Change the name & display name of users which are created in last 24 hours.
# Created by - Amit Tank
# Modifed by - Oleksandr Drach
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin

$Users = Get-User -ResultSize Unlimited | where {($_.WhenCreated -gt (get-date).adddays(-1)) -and ($_.RecipientTypeDetails -eq "UserMailbox")}
ForEach ($User in $Users)
{
$DName = $User.LastName + ' ' + $User.FirstName
$DName = $Dname.Trim()
Set-User $User -Name $DName -DisplayName $DName
Get-User $User | FT Name, DisplayName
$DName = $Null
}


Тепер створимо завдання у Планувальнику завдань Windows для запуску скрипта кожного дня в десять хвилин на першу ночі чи в інший зручний для вас час. Не забудьте вказати виконання скрипта з правами адміністратора.


Все зроблено, ця автоматизація тепер подбає про новостворені поштові скриньки кожної ночі.

Приклад. У нас є користувач, створений з неправильним іменем і форматом відображуваного імені.


Про нього вночі подбає вказаний у планувальнику завдань скрипт.


Ви можете також додати код у скрипт PowerShell для надсилання пошти адміністратору і підтвердження того, що скрипт був виконаний, а імена користувачів успішно змінені.