Как я могу настроить таргетинг на конкретный контейнер и конкретные компьютеры в моем домене?

#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 . Однако я столкнулся с этой проблемой только при аутентификации в другом домене. Вам не нужно добавлять полное доменное имя, если вы ищете свой домен для входа.