如何将PS阵列与mongoDB进行比较以查找已删除的项目?

时间:2019-06-06 18:17:42

标签: arrays mongodb powershell

我要使用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并不喜欢我遍历所有项目,但是我找不到更好的方法来完成它。

那么,您知道更好的方法吗?任何想法都欢迎。

0 个答案:

没有答案