【发布时间】:2021-06-22 19:19:08
【问题描述】:
我正在尝试修改以下代码以从 AD 而不是域管理员返回所有用户:
原代码:
$objDomain = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.SearchScope = "Subtree"
$strFilter = "(&(sAMAccountName=Domain Admins))"
$objSearcher.Filter = $strFilter
$DomainAdminDN = ($objSearcher.FindOne()).Properties.distinguishedname
$objDomain = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 10000000
$objSearcher.SearchScope = "Subtree"
$strFilter = "(&(objectCategory=user)(memberOf=$DomainAdminDN))"
$objSearcher.Filter = $strFilter
return ($objSearcher.FindAll())
}
我进行了以下更改,但它似乎返回 AD 中的每个对象,而不仅仅是 AD 中的用户
$objDomain = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.SearchScope = "Subtree"
$strFilter = "(&objectCategory=user(sAMAccountName=Users))"
$objSearcher.Filter = $strFilter
$DomainAdminDN = ($objSearcher.FindOne()).Properties.distinguishedname
$objDomain = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 10000000
$objSearcher.SearchScope = "Subtree"
$strFilter = "(&(objectCategory=user)(memberOf=$DomainAdminDN))"
$objSearcher.Filter = $strFilter
return ($objSearcher.FindAll())
}
欢迎大家帮忙!
【问题讨论】:
-
好奇您是否查看过用于 powershell 的 ActiveDirectory 模块?可能会使这变得容易得多。
-
你的 LDAP 过滤器应该是
(&(objectClass=User)(objectCategory=Person)(memberOf=$DomainAdminDN))查看这篇文章 stackoverflow.com/questions/7226317/… -
感谢@Santiago,当我将其更改为最终出现此错误时
-
枚举集合时出错:(&(objectClass=User)(objectCategory=Person)(memberOf=)) 搜索过滤器无效.. + return ($objSearcher.FindAll() ) + ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Director...sultsEnumerator:ResultsEnumerator) [], RuntimeException + FullyQualifiedErrorId : BadEnumeration
-
任何想法为什么或如何解决它?
标签: powershell active-directory