【发布时间】:2015-09-24 11:11:33
【问题描述】:
我正在尝试确定用户是否是特定 AD 组的间接成员。这是通过 Delphi XE5 程序完成的,但为了清楚起见,我已经在 PowerShell 中编写(并测试了)我的示例。
不幸的是,我从 LDAP 查询中收到完全不一致的结果:同一查询有时会正常工作,有时会返回用户不是给定组的成员。
这是我正在尝试的(powershell)示例:
get-aduser -LDAPFilter "(memberof:1.2.840.113556.1.4.1941:=CN=egaa_app,OU=Applications,OU=access,OU=groups,OU=xxx,DC=xxx,DC=xxx,DC=xxx)" -SearchBase "CN=usr-sgr,OU=expert1,OU=experts,OU=remoteusers,OU=users,OU=exogit,OU=xxx,DC=xxx,DC=xxx,DC=xxx"
如果用户usr-sgr是AD组的直接或间接成员egaa_app,OU=Applications,OU=access,OU=groups,OU=xxx,DC=xxx,DC=xxx,DC=xxx,则上述命令应返回用户egaa_app,OU=Applications,OU=access,OU=groups,OU=xxx,DC=xxx,DC=xxx,DC=xxx
然而,当我运行一次时,我得到一个空结果。如果我在 AD MMC 中打开用户并以某种方式对其进行更新(在我的情况下,我更改了用户的“主组”,然后将其改回),相同的查询会成功返回用户对象。
我还尝试使用“反向”查询(检查给定组是否间接包含用户)并且我目睹了相同的行为。
所有这些都是在同一个登录会话中的成员服务器(Windows 2008 R2,已修补)上完成的。
【问题讨论】:
标签: powershell active-directory ldap-query