我要使用PS提取大量AD对象,并使用MDBC驱动程序(https://github.com/nightroman/Mdbc)将它们放入MongoDB集合中。这创建了一个包含ca的集合。 35000个文档。
如果用户被禁用或AD上的某些属性发生更改,则ps脚本将更新数据库。
但是,当从AD中删除用户时,会出现问题。我需要在MongoDB上进行更新。
到目前为止,该方法是从Mongo中提取所有数据,并检查$ ADUsers中是否存在该数据,这是我从AD中提取的列表。然后,我更新MongoDB上的某些字段。因此,基本上,我遍历了Powershell数组并检查了数据库。
$adusers = Get-ADUser -Filter *
Connect-Mdbc $connectionString Company Users
$usersInDB = Get-MdbcData -As PS
foreach ($userInDB in $usersInDB)
{
$result = $adusers.Where({ $_.id -eq $userInDB._id })
if (-not $result)
{
Update-MdbcData -Query $query (New-MdbcUpdate -Set @{
ADEnabled = $false;
Status = "Deleted";
})
}
}
问题是这花费了太长时间。显然,Powershell并不喜欢我遍历所有项目,但是我找不到更好的方法来完成它。
那么,您知道更好的方法吗?任何想法都欢迎。