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