четверг, 21 ноября 2013 г.

Обновление поля Инициалы в списке Сотрудники с помощью PowerShell


У меня на портале есть справочник сотрудников, в котором есть поля "Название", "Фамилия", "Имя", "Отчество" и "Инициалы". Проверив справочник, я понял, что поле "Инициалы" в справочнике почти не заполнено, а руками заполнять более 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()


Надеюсь данная статья будет Вам полезна.