Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

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

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Не тестировал, т.к. нет SharePoint:

Код: Выделить весь код
$web = Get-SPWeb "http://SP/test"
$list = $web.lists["Test_AD_Import_Export"]
$items=$spList.Items

$prop = Write-Output employeeID 1 2 3 
$adusers = @{}
$index = @()
Get-ADUser -Filter {(ObjectClass -eq "user") -and (employeeID -like "*")} -Properties $prop | Foreach {
	$adusers[$_.employeeID] = $_
}

# Обновляем данные или удалим запись, если нет в AD, но есть на листе
foreach($item in $items) {
	$id = $item["employeeID"]
	$user = $adusers["$id"]
	$index += $id
	if($user) {
		$prop | Foreach {
			if ($user."$_" -ne $item["$_"]) {
				$item["$_"] = $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 {
			$item["$_"] = $user."$_"
	}
	$item.update()
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:40, 17-07-2014 | #3