более длительное время выполнения после Get-ADUser, когда указан сервер - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть скрипт, который запрашивает AD и обрабатывает результат:

$users=Get-ADUser -filter {...} -Properties ...
try { 
   foreach($user in $users) {
     $obj=new-object PSObject @property {...}
     [void]($arraylist.add($obj))
   }
} 
catch {...}

Get-ADUser занимает около 1,5 с и возвращает более 1000 строк, а весь блок try занимает около 0,5 с.

часть @Properties {...} обрабатывает только поля $user и больше не взаимодействует с AD или любым другим ресурсом. блок try работает без ошибок.

если теперь я изменю первую строку на

$users=Get-ADUser -filter {...} -Properties ... -Server <someDC>

просто добавив параметр -Server, команда Get-ADUser занимает около 3 секунд, а блок try 20 + сек

Я много раз пытался убедиться, что удаленное соединение установлено без каких-либо улучшений. Я пробовал с каждым из доступных контроллеров домена и каждый раз получал одно и то же время выполнения. Если я удалю параметр -Server, я вернусь к исходному времени выполнения.

проблема имеет сходство с описанной в этом посте , но моя проблема в коде, выполняемом после Get-ADUser, а не в Get-ADUser.

Что очень беспокоит, так это то, что код после замедляется.

у вас есть какие-либо подсказки?

DC: Win2008R2
Client: Win7, Powershell5.1, AD Management Tools locally installed.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...