Проблема с отслеживанием ссылок в Active Directory
Может быть, кто-то, кто имеет больше опыта с Active Directory, может мне помочь. Мне нужно получить информацию, такую как ОС, имя, полное доменное имя с компьютера в другом домене. Я объясню, что я имею в виду. У меня есть корневой домен: example.com, с двумя поддоменами: xxx.example.com и yyy.xxx.example.com
Каждый домен содержит 1 компьютер. Они оба в одной группе, например groupfoo, они также в разных OU
Я могу получить информацию о членах в группе, я пробую PowerShell и dsquery. Они оба возвращают правильный список компьютеров в группе. Но я могу получить информацию только с компьютера в том же домене, где я запускаю сценарий PowerShell и dsquery.
чтобы быть понятным, у меня есть еще один компьютер, не входящий в groupfoo, и этот компьютер используется для администрирования Active Directory.
Как я понимаю, в Active Directory у нас есть такая вещь, как "поиск рефералов". Я много читаю и, как я знаю, Power Shell не имеет таких опций, как "включить поиск рефералов". Для dsquery я нашел опцию -r для рекурсивного запроса.
Что я уже пробовал:
PS> dsquery group -name goupfoo | dsget group -members
"CN=member01,OU=Domain Controllers,DC=xxx,DC=example,DC=com"
"CN=member02,OU=XXX,OU=Domain Controllers,DC=yyy,DC=xxx,DC=example,DC=com"
Мой компьютер в DC = гггг, DC = xxx, DC = пример, DC = com Я могу получить информацию от CN=member02,OU=XXX,OU= контроллеры домена, DC = ггг, DC = xxx, DC = пример, DC = ком
PS > dsquery * -filter "(&(objectClass=Computer)(objectCategory=Computer)(sAMAccountName=member02$))" -attr sAMAccountName operatingSystem
sAMAccountName operatingSystem
member02$ Windows Server 2008 R2 Standard
Выполнение той же команды для member01 не дало никаких результатов:
PS > dsquery * -filter "(&(objectClass=Computer)(objectCategory=Computer)(sAMAccountName=member01$))" -attr sAMAccountName operatingSystem
PS >
Я пробовал разные варианты dsquery, я использую ключ -r для рекурсии, но это не сработало.
Может быть, важная вещь, в настройках "DC=yyy,DC=xxx,DC= пример,DC=com" я видел, что "DC=xxx,DC= пример,DC=com" это доверенный родитель для "DC = yyy", DC = xxx, DC = пример, DC = com "может быть, я могу получить информацию, делая то же самое из родительского домена?
То же самое, что я могу получить с Power Shell Get-ADGroup, Get-ADMember и т. Д., Я пытался использовать все параметры, учетные данные, сервер и т. Д., Он всегда возвращает информацию только с одного компьютера в том же домене, что и я.
1 ответ
Попробуйте использовать DirectorySearcher
объект:
$filter = "(&(objectCategory=Computer)(sAMAccountName=$computername))"
$properties = 'distinguishedName', 'sAMAccountName', ...
$search = New-Object DirectoryServices.DirectorySearcher
$search.SearchRoot = New-Object DirectoryServices.DirectoryEntry
$search.Filter = $filter
$search.SearchScope = 'Subtree'
$search.ReferralChasing = [DirectoryServices.ReferralChasingOption]::All
$properties | % { $search.PropertiesToLoad.Add($_) } | Out-Null
$search.FindAll()
Я не знаю, если ActiveDirectory
Командлеты модуля на самом деле поддерживают поиск рефералов.