Get-ADUser не кеширует результаты - PullRequest
0 голосов
/ 20 февраля 2019
$users = get-aduser -filter 'extensionAttribute10 -notlike "*" -and proxyaddresses -like "*"' -Properties extensionAttribute10,proxyaddresses,company

foreach($user in $users){
    $user
}

В приведенном выше примере командлет get-aduser возвращает ~ 20000 объектов (и для запуска требуется некоторое время).Когда Get-ADUser завершен и сценарий перемещается в цикл foreach, PowerShell, похоже, снова вызывает Get-ADUser для каждого объекта в массиве, а не просто возвращает значения из переменной(и в последующем очень, очень медленно).

То же самое поведение применяется, если я ссылаюсь на объект в массиве, используя $ users [100] - в первый раз он медленно возвращает пользователя, когда делаетвызов контроллера домена, второй раз, когда я его называю, он мгновенно возвращается, когда результат кэшируется.

Это ожидаемое поведение, и есть ли способ управления им / кэширование всех результатов заранее?

PSVersion: 5.1.15063.1563

Обновление - Похоже, это происходит только при запросе объектов в лесу, удаленном от пользователя при выполнении команды:

$myForest | Get-ADUser -filter * 
$myForest[0]        # <-- this doesn't reach back to a DC to return the user

$remoteForest | Get-ADUser -filter * -server dc1.remoteforest.com
$remoteForest[0]    # <-- this will call back to a DC to fetch the user even though it's 
                    # been successfully retrieved in the previous line
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...