Только мои 2цента стоят на этой теме ... многие могут и будут иметь разные взгляды на это.
Так что всегда приятно ждать других мнений.
Что касается базового запроса ...
Я хотел бы попытаться оптимизировать работу быстрее и без ошибок
Это очень субъективная вещь.
- Что вы подразумеваете под оптимизацией?
- Что вы имеете в виду, говоря, что он работает быстрее?
Почему вы чувствуете, что это не оптимально?
Почему вы чувствуете, что это не достаточно быстро?
Какие показатели вы использовали или с чем сравнивали?
Итак, вам нужно решить, что вышеизложенное значит для вас, а затем суметь выбрать маршрут, который работает. Потому что в зависимости от того, что вы делаете и как, это будет изменчиво.
Ссылки:
Как ускорить операции PowerShell над объектами AD
Сценарий выходного дня: методы улучшения скорости PowerShell
Медленный код: 5 лучших способов ускорить выполнение сценариев PowerShell
Кодирование скорости
Почему нельзя запускать циклы PowerShell быстро?
Все это, как говорится ...
Я не могу придумать причину, по которой вы бы дважды использовали Get-ADUser / Set-ADUser для одних и тех же данных получения, только ваш установщик отличается. Получите и установите один раз. Для больших наборов записей / данных циклы просто медленные. Помните, ADDS накладывает ограничения на количество записей, которые он будет возвращать за раз. Если вам нужно больше, чем по умолчанию, вам нужно изменить этот параметр / запрос AD. Если это большой набор записей, лучше разбить его на части и разбить, чем на параллельные операции с меньшим набором записей. Посмотрите, как это делается в parraller processing / workflows / runspaces.