今天早些时候讨论了AD Cmdlet -Filter
运算符时,我遇到了一个以前从未见过的运算符:-approx
。我可以在几个博客和一些TechNet文章中找到提到的该运算符,但是没有发现任何解释该运算符用途的信息。除了定义为“近似等于”或~=
之外,我也找不到它的用法示例。在Ruby中进行编程时,我唯一一次使用~=
运算符,它可以进行正则表达式匹配,但是在这种情况下,正则表达式匹配似乎并不是它的用法。我得到它返回任何东西的唯一方法是,如果我提供要过滤的属性的确切值,例如本例中的内容:
Get-AdUser -Filter "samaccountname -approx 'myexactsamaccountname'"
此运算符的正确用法是什么?作为Active Directory管理员使用它可能会有哪些示例?
答案 0 :(得分:2)
这可能不像您希望的那样令人兴奋,但是...
来自Active Directory Technical Specification §3.1.1.3.1.3.1:
Active Directory支持[RFC2251] 4.5.1节的
approxMatch
过滤子句。但是,其实现方式与equalityMatch
相同;例如,如果值相等,则过滤器为true。不执行任何近似。格式为"(X=Y)"
和"(X~=Y)"
的过滤子句可以相互自由替换。
(强调)
所以它就在那里,因为RFC2251定义了approxMath
作为LDAPv3支持的一组运算符的一部分(并且RFC4511进行了描述),并且Microsoft希望能够声称Active Directory中的LDAP服务器实现符合到LDAPv2和LDAPv3上-因此他们在不更改其行为的情况下添加了它(相关RFC从未规定其实现细节)。这与描述found in RFC4511一致:
当
approxMatch
过滤器的值为 某些本地定义的属性类型或子类型 近似匹配算法(例如拼写变化,语音 匹配等)返回TRUE。如果值匹配相等,则它 也满足近似匹配。如果近似匹配是 该属性不支持,应处理此过滤器项 作为equalityMatch
。
最初的意图可能允许通用或局部近似,或者可能允许跨多个字母的等价匹配。搜索:
(givenName~=thorbjorn)
将返回名称为Torbjorn,Þórrbjorn或Thorbjørn的任何人