我是一个学习管理系统网站的管理员,该网站将其页面结构存储在 AD LDS 中。我正在尝试运行查询以获取与distinguishedName 过滤器匹配的对象(站点上的页面)。我的过滤器没有按预期运行。
下面是三个查询,除了过滤器参数外,所有查询都相同。这并不完全是我想要做的,但出于演示目的,这将说明我的问题。
这有效(返回大量结果):
Get-ADObject -Server 'localhost:389' -SearchBase 'CN=Academics,CN=Portal,O=Jenzabar,C=US' -Filter 'distinguishedName -like "*"'
Run Code Online (Sandbox Code Playgroud)
这也有效,(返回单个结果):
Get-ADObject -Server 'localhost:389' -SearchBase 'CN=Academics,CN=Portal,O=Jenzabar,C=US' -Filter 'distinguishedName -like "CN=LEC,CN=Academics,CN=Portal,O=Jenzabar,C=US"'
Run Code Online (Sandbox Code Playgroud)
但是,这没有返回任何结果,我不明白为什么:
Get-ADObject -Server 'localhost:389' -SearchBase 'CN=Academics,CN=Portal,O=Jenzabar,C=US' -Filter 'distinguishedName -like "C*"'
Run Code Online (Sandbox Code Playgroud)
据我所知,第三个查询应该返回第一个查询的所有结果,它至少应该返回第二个查询的单个结果。任何帮助,将不胜感激!
您不能在 LDAP 过滤器中对 DN 属性使用部分通配符,例如distinguishedName
.
允许使用通配符“*”,除非(AD 属性)是 DN 属性。DN 属性的示例是distinguishedName、manager、directReports、member 和memberOf。如果属性是 DN,则只允许使用相等运算符,并且您必须为该值指定完整的可分辨名称(或为具有该属性的任何值的所有对象指定 * 字符)。
您的第一个示例distinguishedName -like "*"
表示“distinguishedName 不为空”,这就是它返回结果的原因。
而是用于Where-Object
匹配 LDAP 过滤器语法之外的属性。下面返回所有AD从对象$server
下$searchBase
然后使用Where-Object
到过滤收集distinguishedName
比赛CN=Jason*
。
Get-ADObject -Server $server -SearchBase $searchBase -Filter * |
Where-Object { $_.distinguishedName -like 'CN=Jason*' }
Run Code Online (Sandbox Code Playgroud)
您还有一个完整的正则表达式选项,使用-match
代替-like
.
归档时间: |
|
查看次数: |
6223 次 |
最近记录: |