Tuesday 22 October 2013


Давно не писал ничего. Из последнего что сделал. Установил Sharepoint Foundation  к нему прикрутил скрипт выгрузки active directory пользователей в файл, и загрузки их в sharepoint портал, для адресной телефонной книги на основе active directory.
Готового ничего не нашел, поэтому пришлось крутить самому. Может быть можно было гораздо элегантней но за недостатком времени пока так. Изначально настроил чере BDC connection в SP, но не смог дать ума и у пользователей не отображалось связка AD+MSSQL+SP. В итоге забил и сделал через списки.

If ("C:\temp\list_user.csv"){
    Remove-Item "C:\temp\list_user.csv"
}

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = "LDAP://ou=xxx ,dc=yyy,dc=ru"
$objSearcher.Filter = "(&(objectCategory=person)(!userAccountControl:1.2.840.113556.1.4.803:=2))"
$users = $objSearcher.FindAll()
$users.Count
$users | ForEach-Object {
   $user = $_.Properties

   New-Object PsObject -Property @{

   fam = [string]$user.sn
   name = [string]$user.givenname
   jobtitle = [string]$user.title
   office = [string]$user.physicaldeliveryofficename
   department = [string]$user.department
   mobile = [string]$user.mobile
   phone = [string]$user.telephonenumber
   mail = [string]$user.mail
    }
} | Export-Csv  -Encoding utf8 -NoClobber -Path  C:\temp\list_user.csv

$web = Get-SPWeb -Identity "http://portal"
$list = $web.Lists["ListName"]
do {$list.items.delete(0)}
until ($list.items.Count -eq 0)

$contents = Import-Csv "C:\temp\list_user.csv"
$web = Get-SPWeb -Identity "http://
portal"
$list = $web.Lists["lista_name"]
foreach ($row in $contents) {
    $item = $list.Items.Add();
    $item["Имя"] = $row.name;
    $item["Фамилия"] = $row.fam;
    $item["Должность"] = $row.jobtitle;
    $item["Офис"] = $row.office;
    $item["Отдел"] = $row.department;
    $item["Почта"] = $row.mail;
    $item["Телефон"] = $row.phone;
    $item["Мобильный"] = $row.mobile;
    $item.Update();
}


No comments:

Post a Comment