Как сравнить массив PS с mongoDB, чтобы найти удаленные элементы? - PullRequest
1 голос
/ 06 июня 2019

Я вытягиваю множество объектов AD с помощью PS и помещаю их в коллекцию MongoDB, используя драйвер MDBC (https://github.com/nightroman/Mdbc).. При этом создается коллекция с приблизительно 35000 документов.

Сценарий psобновит базу данных, если пользователи будут отключены или некоторые атрибуты изменятся в AD.

Но проблема возникает, когда пользователи удаляются из AD. Мне нужно обновить это в 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 не нравится, когда я перебираю все элементы, но я не мог найти лучший способ сделать это.

Итак, знаете ли вы лучший способ сделать это? Любые идеи приветствуются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...