Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Новый участник


Сообщения: 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.

Отправлено: 10:43, 22-07-2014 | #5