active-directory - Ldap 过滤器“>=”不适用于 Active Directory 中的连字符
问题描述
我们在extensionattribute1
用户中有以下 3 个值:
- -1000
- -7
- *中午*12
此 LDAP 过滤器仅获取在 extensionattribute1 中具有第三个值的用户,
extensionattribute1 >= *Noon*12
AD 执行词法搜索,它应该获取所有具有上述所有 3 个值的用户。
我们正在努力寻找这种 Active Directory 行为的原因。请帮忙。
解决方案
该*
字符是通配符。因此,如果您想将其用作文字(作为*
值中的实际字符),您应该对其进行转义:
extensionattribute1 >= \2ANoon\2A12
但是,我认为这不是您的问题。
在我能找到的任何文档中,关于“词典”对 AD 意味着什么的规则都没有明确说明。一般来说,它的意思是“字母顺序”。这对文本来说很好,但对符号意味着什么则完全不清楚。它绝对不会总是使用它们在Unicode 表中的位置。
我自己做了一些测试。它确实将句点 ( .
) 排在逗号 ( ,
) 之上,正如您从它们在 Unicode 表中的位置所期望的那样。但是在表格中的句号和逗号之间的连字符,AD 的排名似乎非常非常低。它总是比几乎所有东西都少。我可以搜索小于空格字符 ( <=\20
) 并且将匹配连字符的值。
所以,简短的回答是你不能做你想做的事。使用>=
不会给您希望的结果。
但是,您可以使用 OR 比较来查找所有这三个值,如果这些是您想要查找的唯一三个值:
(|(extensionattribute1=\2ANoon\2A12)(extensionattribute1=-1000)(extensionattribute1=-7))
推荐阅读
- python - 用于显示 matplotlib 图的简单 Docker 容器
- python - 当用户假设按数字而不是字母时如何使我的程序运行
- r - 如何将层数据集转换为 R 中的普通数据集
- javascript - 使用 JQuery 滚动到页面顶部
- java - 添加 admob 会导致不存在的错误。错误 - java.lang.IllegalArgumentException:服务未注册:lt@777a78f
- mysql - 在 Node Js 中制作打印按钮
- javascript - Mongoose 的填充方法只存储一个 Object
- javascript - 是否可以使用 JavaScript 检测当前播放的音频文件的音量(在静音时停止动画)?
- python - 将 MATLAB 代码转换为 Python 并收到 TypeError: 'numpy.ndarray' object is not callable 错误
- node.js - 试图用玩笑来窥探在即发即弃方法中的响应