Лучший способ поиска по всей Active Directory для одного пользователя - PullRequest
1 голос
/ 02 мая 2019

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

Корневой домен (NA1.local)

Ресурсный домен (domain1.local, domain2.local, domain3.local)

MSmith (не уверен, где в домене он или она находится или идентификатор пользователя был удален из AD) $ user = PSmith

foreach ($domain in $domains)
{
  Get-ADUser -Identity $username -Server $domain  -ErrorAction SilentlyContinue
if ($? -eq 'True') { 
                $forest = Get-ADUser $username -Server $domain
                Add-ADGroupMember -Identity $GPName -Member $forest -Server $VbrickSrv } 
}

Ответы [ 2 ]

1 голос
/ 02 мая 2019

Укажите имя пользователя с помощью -Filter или -LDAPFilter против параметра -Identity.Фильтры обычно быстрее, потому что они выполняют фильтрацию на контроллере домена, а не локально на машине, на которой выполняется скрипт.Кроме того, командлет не будет генерировать исключение, если при использовании параметров фильтра (поверх идентификатора) ничего не возвращается.

$user = Get-ADUser -Filter { SamAccountName -eq 'psmith' }
...

Обычно я советую вам установить базу поиска в соответствии с тем, что имеет смысл для поиска,Чем больше ограничений, тем лучше, но я вижу, что вы хотите искать по всему домену.Просто запомните это.

Проверьте следующую статью для более глубокого обсуждения.

https://social.technet.microsoft.com/wiki/contents/articles/28485.filters-with-powershell-active-directory-module-cmdlets.aspx

0 голосов
/ 03 мая 2019

Кроме того, что @Adam сказал об использовании фильтра, а не предложения where (что является правильным ответом), вы можете немного упростить свой код, когда найдете пользователя

foreach ($domain in $domains) {
    If ($u = Get-ADUser -Filter 'SamAccountName -eq "psmith"' -server $domain) {
        Add-ADGroupMember -Identity $GPName -Members $u -Server $domain
        Break  #this should exit from the foreach loop
    }
}
...