Новый участник
Сообщения: 3
Благодарности: 0
|
Профиль
|
Отправить PM
| Цитировать
Итак, получилось 2 варианта.
1. Импорт AD в csv и последующий импорт в список SP.
читать дальше »
Код: 
import-module ActiveDirectory
Get-ADUser -Filter {(ObjectClass -eq "user") -and (employeeID -like "*")} -Properties employeeID, name, givenName, sn, mail, title, homePhone, pager, mobile, facsimileTelephoneNumber, physicalDeliveryOfficeName | sort-object -property Name | Select employeeID, name, givenName, sn, mail, title, homePhone, pager, mobile, facsimileTelephoneNumber, physicalDeliveryOfficeName | Export-Csv D:\Contacts.csv -Encoding Unicode -NoTypeInformation
#
#
import-module ActiveDirectory
if((Get-PSSnapin | Where {$_.Name -eq "Microsoft.Sharepoint.Powershell"}) -eq $null) {
Add-PSSnapin Microsoft.Sharepoint.Powershell
}
$web = Get-SPWeb "http://portal/site1"
$list = $web.lists["AD2SP"]
$items = $list.Items
$sprop = @{ "employeeID" = "Табельный"
"Name" = "Полное имя"
"givenName" = "Фамилия"
"sn" = "Имя Отчество"
"mail" = "Адрес электронной почты"
"title" = "Должность"
"homePhone" = "Корп №"
"pager" = "№"
"mobile" = "Мобильный №"
"facsimileTelephoneNumber" = "Городской №"
"physicalDeliveryOfficeName" = "Кабинет"}
$prop = Write-Output employeeID, name, givenName, sn, mail, title, homePhone, pager, mobile, facsimileTelephoneNumber, physicalDeliveryOfficeName
$adusers = @{}
Import-Csv "D:\Contacts.csv" | Foreach {
$adusers[$_.employeeID] = $_
}
$index = @()
foreach($item in $items) {
$id = $item["Табельный"]
$user = $adusers["$id"]
$index += $id
if($user) {
$prop | Foreach {
$p = $sprop["$_"]
if ($user."$_" -ne $item["$p"]) {
$item["$p"] = $user."$_"
}
}
$item.update()
}
else {
$item.delete()
}
}
Compare-Object ($adusers.GetEnumerator() | Foreach {$_.Name}) $index | Where {$_.SideIndicator -eq "<="} | Foreach {
$user = $adusers["$($_.InputObject)"]
$item = $list.items.Add()
$prop | Foreach {
$p = $sprop["$_"]
if ($user."$_" -ne $item["$p"]){
$item["$p"] = $user."$_"
}
}
$item.update()
}
exit
2. Импорт из AD напрямую в SP
читать дальше »
Код: 
import-module ActiveDirectory
if((Get-PSSnapin | Where {$_.Name -eq "Microsoft.Sharepoint.Powershell"}) -eq $null) {
Add-PSSnapin Microsoft.Sharepoint.Powershell
}
$web = Get-SPWeb "http://portal/site1"
$list = $web.lists["AD2SP"]
$items = $list.Items
$sprop = @{ "employeeID" = "Табельный"
"Name" = "Полное имя"
"givenName" = "Фамилия"
"sn" = "Имя Отчество"
"mail" = "Адрес электронной почты"
"title" = "Должность"
"homePhone" = "Корп №"
"pager" = "№"
"mobile" = "Мобильный №"
"facsimileTelephoneNumber" = "Городской №"
"physicalDeliveryOfficeName" = "Кабинет"}
$prop = Write-Output employeeID, name, givenName, sn, mail, title, homePhone, pager, mobile, facsimileTelephoneNumber, physicalDeliveryOfficeName
$adusers = @{}
$index = @()
Get-ADUser -Filter {(ObjectClass -eq "user") -and (employeeID -like "*")} -Properties $prop | Foreach {
$adusers[$_.employeeID] = $_
}
foreach($item in $items) {
$id = $item["Табельный"]
$user = $adusers["$id"]
$index += $id
if($user) {
$prop | Foreach {
$p = $sprop["$_"]
if ($user."$_" -ne $item["$p"]) {
$item["$p"] = $user."$_"
}
}
$item.update()
}
else {
$item.delete()
}
}
Compare-Object ($adusers.GetEnumerator() | Foreach {$_.Name}) $index | Where {$_.SideIndicator -eq "<="} | Foreach {
$user = $adusers["$($_.InputObject)"]
$item = $list.items.Add()
$prop | Foreach {
$p = $sprop["$_"]
if ($user."$_" -ne $item["$p"]){
$item["$p"] = $user."$_"
}
}
$item.update()
}
exit
П.С.: Огромное спасибо пользователю Kazun.
|