В 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
не может получить записи (ий).
Ниже приведен скриншот результатов, наблюдаемых в различных средах,
Теперь, если бы не решение, я был бы рад, если хотя бы кто-то может воспроизвести это поведение.
Запрос:
В моем примере
DirectorySearcher
* $ldapcn = "GC://DC=mydomain,DC=net"
против
Get-ADUser
* $Server_AD_GC = (Get-ADDomainController -Server $Domain | select -exp hostname) + ":3268"
Я ожидал, что оба будут работать одинаково. Я вижу, что я не указал хост для DirectorySearcher
, но дал хост для Get-ADUser
. Это то, на что нужно посмотреть?