У меня на портале есть справочник сотрудников, в котором есть поля "Название", "Фамилия", "Имя", "Отчество" и "Инициалы". Проверив справочник, я понял, что поле "Инициалы" в справочнике почти не заполнено, а руками заполнять более 200 элементов, на мой взгляд, долго и не разумно. Для решения этой задачи решил прибегнуть к PowerShell.
Приступим!
Для начала обратимся к списку:
$web = get-spweb http://server/site $list = $web.Lists['Подразделения и сотрудники']
Далее запустим цикл и пробежимся по
всем элементам, у которых заполнены поля «Имя» и «Отчество»
$items = $List.Items
foreach ($item in $items)
{
if (($item['Имя'] -ne $Null) -and ($item['Отчество'] -ne $Null))
{
Формируем значение для подстановки
в поле «Инициалы». Для этого берем первые
буквы из полей элемента «Имя» и «Отчетсво».
$string1 = $item['Имя'].substring(0,1) $string2 = $item['Отчество'].substring(0,1) $string = $string1+'.'+$string2+"." write-host $string #выводим получившееся значение
$item['Title'] = $stringTitle $item['Инициалы'] = $string $item.Update() } } $web.Dispose()
Т.к. мне еще нужно было обновить
поле «Название» в котором должно иметь значение поля «Фамилия» и «Инициалы»
Вот полный скрипт:
$web = get-spweb http://server/site
$list = $web.Lists['Подразделения и сотрудники']
$items = $List.Items
foreach ($item in $items)
{
if (($item['Имя'] -ne $Null) -and ($item['Отчество'] -ne $Null))
{
write-host $item['Title']
#формирование Инициалов
$string1 = $item['Имя'].substring(0,1)
$string2 = $item['Отчество'].substring(0,1)
$string = $string1+'.'+$string2+"."
write-host $string
#формирование Названия
$stringTitle = $item['Фамилия']+' '+$string
write-host $stringTitle
# обновление элемента
$item['Title'] = $stringTitle
$item['Инициалы'] = $string
$item.Update()
}
}
$web.Dispose()
Надеюсь данная статья будет Вам полезна.
Комментариев нет:
Отправить комментарий