带range参数的LDAP Groupfilter查询AD组成员返回0结果求助
分析AD组成员range筛选器返回0结果的问题
嘿,我来帮你捋捋这个问题——你肯定是搞混了LDAP筛选器和属性请求里的range扩展用法啦!
核心问题:range语法放错地方了
你写的(name=*)(member;range=0-1)是把range条件塞进了LDAP筛选器里,但AD的range扩展根本不是这么用的:
- LDAP筛选器(就是括号里的部分)是用来筛选哪些组会被返回,比如
(name=*)是匹配所有有名的组。 - 而
member;range=0-1属于属性请求的范畴,它是用来控制返回的member属性值的数量,不是用来筛选组的。
你现在的写法相当于让AD去找“存在member;range=0-1这个属性的组”,但AD里根本没有这个属性,所以自然返回0个结果。
正确的用法
保持筛选器还是(name=*),但在请求返回的属性时指定带range的member:
举个例子(PowerShell)
# 获取所有组,并只返回每个组的前2个成员(0-1是索引,包含两端) Get-ADGroup -Filter {Name -like "*"} -Properties "member;range=0-1"
再比如用ldapsearch命令
ldapsearch -x -b "dc=yourdomain,dc=com" "(name=*)" "member;range=0-1"
额外注意点
- AD的range索引是从0开始的,所以
0-1正好返回前2个成员,符合你的需求。 - 如果你后续需要分页获取更多成员,可以先请求
member;range=0-*,AD会返回类似member;range=0-1499的头信息,告诉你当前返回的范围和总数,然后再继续请求member;range=1500-2999这样的区间。
内容的提问来源于stack exchange,提问作者Paks
相关产品推荐
相关产品推荐

