#powershell #active-directory #powershell-2.0
#powershell #active-directory #powershell-2.0
Вопрос:
Как мне получить все дочерние элементы определенного узла в моем домене?
$objDomain = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.SearchScope = "Subtree"
$objSearcher.PageSize = 1000
$objSearcher.Filter = "(objectCategory=$strFilter)"
$colResults = $objSearcher.FindAll()
Приведенный выше код работает, но предоставляет весь домен.
Если домен contoso.com Меня интересует
таргетинг на компьютеры, которые будут находиться в этом контейнере
"LDAP://dc=departmentA,dc=contoso, dc=com"
Также, если в отделе есть очень конкретные компьютеры
Комментарии:
1. Я предполагаю, что вы имели в виду
OU=departmentA
. Путь LDAP, который вы указали в качестве примера, указывает домен с именем departmenta.contoso.com , а не на контейнер с именем departmentA в домене contoso.com .
Ответ №1:
Ваш LDAP uri неверен, если departmentA
это организационное подразделение, оно должно читать LDAP://OU=departmentA,dc=contoso,dc=com
.
Сделайте себе одолжение и установите модуль AD Powershell (часть RSAT), и ваш запрос станет:
Get-ADComputer -Filter $strFilter -SearchBase "ou=departmentA,dc=contoso,dc=com"
Ответ №2:
«Корень поиска» в терминологии LDAP — это корневой узел, к которому применяется поиск. New-Object System.DirectoryServices.DirectoryEntry
без аргументов возвращает корневой узел домена входа в систему текущего сеанса. Поскольку вы предоставляете корневой узел домена в качестве корня поиска и устанавливаете область действия на «поддерево», вы выполняете поиск по всему домену.
Если вы укажете путь LDAP к определенному контейнеру в качестве строкового аргумента, он вернет объект DirectoryEntry, представляющий этот контейнер, который вы можете использовать в качестве значения свойства SearchRoot:
$objSearcher.SearchRoot = New-Object System.DirectoryServices.DirectoryEntry('LDAP://OU=departmentA,DC=contoso,DC=com')
Я обнаружил, что в некоторых случаях, если путь LDAP, просто указывающий DN контейнера, не работает, этот формат работает: LDAP://<FQDN>/<Container's DN>
, что для этого примера было бы LDAP://contoso.com/OU=departmentA,DC=contoso,DC=com
. Однако я столкнулся с этой проблемой только при аутентификации в другом домене. Вам не нужно добавлять полное доменное имя, если вы ищете свой домен для входа.