Не тестировал, т.к. нет 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()
}