Давно не писал ничего. Из последнего что сделал. Установил 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();
}