Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何将PS数组与mongoDB进行比较以查找已删除的项目?_Arrays_Mongodb_Powershell - Fatal编程技术网

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

Arrays 如何将PS数组与mongoDB进行比较以查找已删除的项目?,arrays,mongodb,powershell,Arrays,Mongodb,Powershell,我使用MDBC驱动程序()将许多带有PS的AD对象放入MongoDB集合中。这创建了一个包含约35000个文档的集合 如果用户被禁用或AD上的某些属性发生更改,ps脚本将更新数据库 但是当一个用户从广告中删除时,问题就出现了。我需要在MongoDB上更新它 到目前为止,方法是从Mongo中提取所有数据,并检查是否存在$ADUsers,这是我从AD中提取的列表。然后,我更新MongoDB上的一些字段。所以,基本上我是在一个powershell数组中循环并检查DB $adusers = Get-AD

我使用MDBC驱动程序()将许多带有PS的AD对象放入MongoDB集合中。这创建了一个包含约35000个文档的集合

如果用户被禁用或AD上的某些属性发生更改,ps脚本将更新数据库

但是当一个用户从广告中删除时,问题就出现了。我需要在MongoDB上更新它

到目前为止,方法是从Mongo中提取所有数据,并检查是否存在$ADUsers,这是我从AD中提取的列表。然后,我更新MongoDB上的一些字段。所以,基本上我是在一个powershell数组中循环并检查DB

$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不喜欢我循环浏览所有项目,但我找不到更好的方法


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

在一个变量中获取AD中的所有用户名,在另一个变量中获取MongoDB中的所有用户名。然后比较对象$ADPrincipals$MongoPrincipals,得出结果。您可能希望筛选出MongoDB中已删除的UPN。在一个变量中从AD获取所有UserPrincipalName,在另一个变量中从MongoDB获取所有UserPrincipalName。然后比较对象$ADPrincipals$MongoPrincipals,得出结果。您可能希望过滤掉MongoDB中已经删除的UPN。