Заметки IT Менеджера

01.10.2013

Экспорт номеров телефонов и структуры организации в Phone Xpress


Когда-то я уже писал о программе Phone Xpress и описывал то, каким образом ее можно применять для оптимизации расходов на связь, контроля и т.д.

Все это время мне не хватало возможности автоматически, регулярно и оперативно обновлять данные о пользователях телефонов и их номерах. Не смотря на наличие в Phone Xpress импорта и экспорта структуры организации, мне это было делать неудобно, т.к. в моем случае людей много, регулярно меняются сами люди и номера, которыми они пользуются. Конечно же, этим должны били заниматься секретари, но они то забыли, то еще что-то. Еще много лет назад я написал скрипт, который брал из файла, который выгружался из интранет сайта, данные и обновлял их в AD. В результате у каждого аккаунта были прописаны должность, отдел, телефоны, адреса и т.д. В общем-то, оставалось только написать скрипт, который бы мог брать данные из AD и на их основе генерировать файл, который, в свою очередь, можно будет проимпортировать в Phone Xpress.

Я умышленно пользовался внешними компонентами от Quest для работы с AD, т.к. в этом случае все будет работать и в 2003 домене. В скрипте есть ряд фрагментов, которые, в зависимости от вашей ситуации, нужно будет модифицировать.

<#
.SYNOPSIS
   <Описание: скрипт создает структуру компании для программы Phone Xpress (www.apslab.net) на основании данных из AD>
.DESCRIPTION
   <Описание: скрипт создает структуру компании для программы Phone Xpress (www.apslab.net) на основании данных из AD>
#>
# Автор: Евгений Рыжков
# Дата создания: 24.07.2013
# Автор изменения: itpadla.wordpress.com
# Дата изменения: 05.09.2013
# Для работы скрипта требуются бесплатные компоненты от компании Quest ActiveRoles Management Shell for Active Directory
# скачать их можно по адресу —
http://www.quest.com/powershell/activeroles-server.aspx
# Для хранения номера внутреннего телефона используется поле "Telephone number" (атрибут "telephoneNumber") в свойствах пользователя AD

$ActiveRolesPss = Get-PSSnapin -Name Quest.ActiveRoles.ADManagement -ErrorAction SilentlyContinue
If ($ActiveRolesPss.Name -ne "Quest.ActiveRoles.ADManagement") {Add-PSSnapin Quest.ActiveRoles.ADManagement}
cls

#Путь к контейнеру с пользователями
$user_ou_root = "OU=Common Users,OU=Domain Users,DC=contoso,DC=ua"

#Путь к файлу с результатом
$structure_file_name = ‘c:\test3\ad_org_structure.txt’
$out_data = »
$atsname = »
$correct_number = $true

# Блок статических данных, т.е. тех, которых нет в AD. Наиболее простой способ его получить — вбить нужное в Phone Xpress,
# сделать Export и скопировать из файла нужные фрагменты
$Static_part = @"
IT Department    \Contoso\IT Department           
IT Help Desk    \Contoso\IT Department\IT Help Desk            
Бамбердуев Агасфер    \Contoso\IT Department\IT Help Desk        Help Desk System Administrator    7777(co-ats01)
Склифасовский Вилен    \Contoso\IT Department\IT Help Desk        Help Desk System Administrator    7778(co-ats01)
Ресепшен    \Contoso\Administrative department        Ресепшен    7003(co-ats01),7111(co-ats01)
"@

$users2export = Get-QADUser -SearchRoot $user_ou_root | where-Object {($_.PhoneNumber -ne ») -and ($_.PhoneNumber -ne $null)} | sort-Object -Property Company, Department, Name

cls
# План нумерации, тут прописывается название АТС исходя из глобального плана нумерации. Будет работать только если он сквозной.
# В противном случае этот блок стоит переписать, привязываясь, например, к офису или сайту AD
ForEach ($user in $users2export)
{
Switch ($user.PhoneNumber)
  {
   {($_ -le 7940) -and ($_ -ge 7900)}{$atsname = ‘cb-ats01’}
   {($_ -le 7800) -and ($_ -ge 7001)}{$atsname = ‘co-ats01’}
   Default {$correct_number = $false}
  }
# Прописывание корневого префикса в зависимости от названия АТС. Нужно, если есть центральная компания, которая не указывается в AD
If ($correct_number)
{
   If ($atsname -eq ‘co-ats01’){$RootOrgPrefix = ‘Contoso’}
    ElseIf ($atsname -eq ‘cb-ats01’){$RootOrgPrefix = ‘NeContoso’}
    Else {$RootOrgPrefix = »}

# Если имя и фамилия пользователя сформированы в описании в формате: Фамилия Имя (Отдел\должность), то берем их оттуда
If ($user.Description -ne $null)
{
    $user_arr = $user.Description.split(‘ ‘)
    If (($user_arr.count -ge 4) -and ($user_arr[-1].EndsWith(‘)’)) -and ($user.Description.Contains(‘\’)))
    # Если в второе слово в описании начинается с (, то считаем, что там девичья фамилия и берем имя из третьего слова
     { If ($user_arr[1].StartsWith(‘(‘)) {$UserName = $user_arr[0] + ‘ ‘ + $user_arr[1] + ‘ ‘ + $user_arr[2]}
         Else {$UserName = $user_arr[0] + ‘ ‘ + $user_arr[1]}
     }
     Else {$UserName = $user.Displayname}
}
Else {$UserName = $user.Displayname}
 
#    Подставляем значение названия компании в зависимости от АТС, если это требуется, то раскомментировать следующую строку, если нет, то закомментировать
   $out_data += $UserName + "`t\" + $RootOrgPrefix + "\" + $user.department + "`t`t" + $user.title + "`t" + $user.PhoneNumber + ‘(‘ + $atsname + ")`r"}
#    Если поле компания заполнено корректно, то раскомментировать следующую строку, если нет, то закомментировать
#   $out_data += $UserName + "`t\" + $user.company + "\" + $user.department + "`t`t" + $user.title + "`t" + $user.PhoneNumber + ‘(‘ + $atsname + ")`r"}
   $correct_number = $true
}
$out_data += $Static_part
$out_data | Out-File $structure_file_name -Encoding default

После того, как будет получен файл со структурой нужно запустить Phone Xpress Администратор, перейти в раздел “Структура организации”, зайти в меню “Действие”, там выбрать пункт “Импорт структуры организации …”, выбрать файл со структурой, в открывшемся окне поставить галочки в пунктах “Импорт в верхний уровень” и “Заменить существующую структуру”, в поле разделитель столбцов данных выбрать “TAB” и нажать OK. Ну и конечно, традиционно, перед всем этим следует выгрузить существующую структуру, чтобы в случае проблем было что восстанавливать из резервной копии.

Реклама

Добавить комментарий »

Комментариев нет.

RSS feed for comments on this post. TrackBack URI

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

Блог на WordPress.com.

%d такие блоггеры, как: