Поиск ADUser: Get-ADUser и DirectorySearcher - PullRequest
0 голосов
/ 23 апреля 2020

В PowerShell я пытаюсь получить учетную запись ADUser с Get-ADUser с LdapFilter с использованием атрибута employeeid. Я использую сервер домена G C в качестве сервера поиска для более быстрых результатов. Тем не менее, я не получаю соответствующие учетные записи ADUser. Тем не менее, я могу получить результаты, используя объект DirectorySearcher. Пожалуйста, обратитесь к проверенным фрагментам кода ниже,

###

#1 DirectorySearcher

$empid = "123456"

$ldapcn = "GC://dc=mydomain,dc=net"

$ldapfilter = "(&(ObjectCategory=Person)(objectclass=user)(employeeid=" + $empid + "))"

$objent = new-object System.DirectoryServices.DirectoryEntry($ldapcn)
$objsearch = new-object System.DirectoryServices.DirectorySearcher
$objsearch.SearchRoot = $objent
$objsearch.SearchScope = "subtree"
$objsearch.Filter = $ldapfilter
$objsearch.pagesize = 1000

$properties = "employeeid","givenname","sn","samaccountname"

$objsearch.propertiestoload.addrange($properties)
$results = $objsearch.Findall()

# Working
# $results contains matching user records

######################################################

#2 Get-ADUser

$empid = "123456"

$Server_AD_GC = (Get-ADDomainController -Server mydomain.net | select -exp hostname) + ":3268"
$ldapfilter = "(&(ObjectCategory=Person)(objectclass=user)(employeeid=" + $empid + "))"

$results = Get-ADUser -LdapFilter $ldapfilter -Properties employeeid, givenname, sn, samaccountname -Server $Server_AD_GC

# NOT WORKING!
# $results DOES NOT CONTAIN matching user records

Что мне здесь не хватает ?! Любая помощь будет принята с благодарностью.


ОБНОВЛЕНИЕ 1

Я только что проверил набор частичных атрибутов (PAS) с помощью приведенного ниже кода и НЕ ВИДЕ employeeid, включенный в список

$Domain = "mydomain.net"
# $schemaNamingContext =  "cn=Schema,cn=Configuration,dc=mydomain,dc=net"
$schemaNamingContext = (Get-ADRootDSE -Server $Domain).SchemaNamingContext
Get-ADObject -SearchBase $schemaNamingContext -LDAPFilter "(isMemberOfPartialAttributeSet=TRUE)" -Properties ldapDisplayName | Select ldapDisplayName | sort ldapDisplayName

Для получения дополнительной информации я запускаю блок кода 'DirectorySearcher' для поиска источника mydomain.net и запускаю его с сервера W2012R2, присоединенного к доверенному домену, скажем mycaller.net, что из другого леса. Важно отметить, что вызывающий доверенный домен mycaller.net PAS СОДЕРЖИТ employeeid. Однако, как уже говорилось, Get-ADUser не может получить записи (ий).

Ниже приведен скриншот результатов, наблюдаемых в различных средах,

Get-ADuser-and-DirectorySearcher-Results

Теперь, если бы не решение, я был бы рад, если хотя бы кто-то может воспроизвести это поведение.

Запрос:

  1. В моем примере

    DirectorySearcher * $ldapcn = "GC://DC=mydomain,DC=net"

    против

    Get-ADUser * $Server_AD_GC = (Get-ADDomainController -Server $Domain | select -exp hostname) + ":3268"

    Я ожидал, что оба будут работать одинаково. Я вижу, что я не указал хост для DirectorySearcher, но дал хост для Get-ADUser. Это то, на что нужно посмотреть?

...