Дни рождения сотрудников в календаре Sharepoint
Дни рождения сотрудников, наверное одна из самых популярных страниц на моем портале. Для наполнения ее данными я использую связку БД сотрудников организации + ActiveDirectory + Sharepoint. При приеме нового сотрудника на работу в учетной записи пользователя заполняются дополнительные атрибуты: табельный номер и дата рождения. Раз в месяц, на сервере sharepoint отрабатывает скрипт подтягивающий новые данные в общий календарь, и удаляющий сотрудников, которые уже уволены.
Для реализации автоматического занесения ДР на портал необходимо: модифицировать схему в AD; добавить атрибут в профиль пользователя на sharepoint (чтобы данные отображались не только в календаре но и в профиле пользователя); выполнить скрипт.
1. Как модифицировать схему ActiveDirectory
2. Добавление атрибута, для синхронизации данных в профиле пользователя sharepoint с ActiveDirectory. Надо выполнить следующие действия если вы не увидели свой атрибут в доступных для сопостовления:
- запустить приложение \Program Files\Microsoft Office Servers\14.0\Synchronization Service\UIShell\miisclient.exe (FIM client);
- перейти на вкладку Managment Agents и выбрать ADDS -> Properties -> Selected Attributes - Show all;
- выбрать наш атрибут и закрыть окно;
- нажать Refresh Shema;
3. Создание календаря.
Здесь все обычно. Создаем новый календарь, выводим его на ту страницу которая нам удобна.
4. Заполнение списка скриптом.
На сервере sharepoint запускаем скрипт.Скрипт очищает список и заполняет его новыми событиями.
$SpList - URL нашего календаря
$SpSite - Сайт на котором расположен календарь
Для реализации автоматического занесения ДР на портал необходимо: модифицировать схему в AD; добавить атрибут в профиль пользователя на sharepoint (чтобы данные отображались не только в календаре но и в профиле пользователя); выполнить скрипт.
1. Как модифицировать схему ActiveDirectory
2. Добавление атрибута, для синхронизации данных в профиле пользователя sharepoint с ActiveDirectory. Надо выполнить следующие действия если вы не увидели свой атрибут в доступных для сопостовления:
- запустить приложение \Program Files\Microsoft Office Servers\14.0\Synchronization Service\UIShell\miisclient.exe (FIM client);
- перейти на вкладку Managment Agents и выбрать ADDS -> Properties -> Selected Attributes - Show all;
- выбрать наш атрибут и закрыть окно;
- нажать Refresh Shema;
3. Создание календаря.
Здесь все обычно. Создаем новый календарь, выводим его на ту страницу которая нам удобна.
4. Заполнение списка скриптом.
На сервере sharepoint запускаем скрипт.Скрипт очищает список и заполняет его новыми событиями.
$SpList - URL нашего календаря
$SpSite - Сайт на котором расположен календарь
cls
Add-PsSnapin Microsoft.SharePoint.PowerShellAdd-PSSnapin Quest.ActiveRoles.ADManagementStart-SPAssignment -Global$nl = [System.Environment]::NewLine
$spsite = New-Object Microsoft.SharePoint.SPSite("http://sharepoint") $spweb = $spsite.OpenWeb()$spList = $spWeb.GetList("/Lists/List6")
Select-Object -Property title,UniqueId
$spItems=$spList.Items
function clearevent ([string]$text){ $spItems=$spList.Items forEach($sobitie in $spItems) { $value = $sobitie['Название'] if ($value.Contains($text)){ $id=$sobitie.get_ID() $spItems.DeleteItemById($id) $spItems.Update() } }}
Function modifydate ([string]$d){ $mounth = @ {'Январь'='01';'Февраль'='02';'Март'='03';'Апрель'='04';'Май'='05';'Июнь'='06';'Июль'='07';'Август'='08';'Сентябрь'='09';'Октябрь'='10';'Ноябрь'='11';'Декабрь'='12'} $wrightdate = $d.remove($d.indexof(' ')) $wrightdate = $mounth[$wrightdate]+'/'+$d.remove(0,$d.indexof(' ')+1)+'/2012' return $wrightdate}
$users = Get-QADUser -IncludeAllProperties
foreach ($user in $Users) {$displayname = $user.DisplayName$birsday = $user.UserEmpBirsday$SameAccountName = $user.SamAccountName
clearevent $displayname $date = modifydate $birsday $spitems = $spList.AddItem()$spItems["Название"]= $displayname$spItems["Категория"]='День рождения'$spItems["Целый день"]='True'$spItems["Время начала"] = $date$spItems["Время окончания"] = $date $spItems["Описание"]=' Подробнее '
$spItems.Update()}
$SPWeb.Dispose()$spsite.Dispose()STOP-SPAssignment -Global
Комментарии