Дни рождения сотрудников в календаре 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.PowerShell
Add-PSSnapin Quest.ActiveRoles.ADManagement
Start-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
Комментарии