查看 AD Cmdlet 时-Filter
今天早些时候,我遇到了一个我以前从未见过的操作员:-approx
。我可以在几个博客和一些 TechNet 文章中找到提到此运算符,但我没有找到任何解释此运算符的用途的信息。除了“大约等于”的使用定义之外,我也找不到任何使用它的例子,或者~=
。我唯一一次使用过~=
在 Ruby 中编程时使用 运算符,它执行正则表达式匹配,但正则表达式匹配似乎并不是在本例中使用的。我让它返回的唯一方法anything是如果我提供我正在过滤的属性的确切值,如下例所示:
Get-AdUser -Filter "samaccountname -approx 'myexactsamaccountname'"
该操作符的正确用法是什么,以及将其用作 Active Directory 管理员的示例有哪些?
这可能不像您希望的那么令人兴奋,但是......
来自Active Directory 技术规范 §3.1.1.3.1.3.1 https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/0bb88bda-ed8d-4af7-9f7b-813291772990:
活动目录支持approxMatch
[RFC2251]第 4.5.1 节的过滤器子句。然而,它的实现方式与 equalityMatch
;例如,如果值相等,则过滤器为 true。不执行近似。表单的过滤子句"(X=Y)"
and "(X~=Y)"
可以互相自由替换。
(emphasis added)
所以,它就在那里,因为 RFC2251 定义了(并且 RFC4511 描述了)approxMath
作为 LDAPv3 中受支持的运算符集的一部分 - 并且 Microsoft 希望能够声明 Active Directory 中的 LDAP 服务器实现同时符合 LDAPv2 和 LDAPv3 - 因此他们在不更改其行为的情况下添加了它(相关的实现细节无论如何,RFC 从来没有规定)。这与描述相符在 RFC4511 中找到 https://www.rfc-editor.org/rfc/rfc4511#section-4.5.1.7.6:
An approxMatch
当存在值时,过滤器为 TRUE
某些本地定义的属性类型或子类型
近似匹配算法(例如,拼写变化、语音
匹配等)返回 TRUE。如果一个值匹配相等,则它
也满足近似匹配。如果近似匹配是
该属性不支持,应处理此过滤项
作为equalityMatch
.
最初的意图可能是允许通用或局部近似,或者可能允许跨多个字母表的等价匹配,即。搜索:
(givenName~=thorbjorn)
将返回任何名为 Torbjorn、Þórrbjorn 或 Thorbjørn 的人
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)