Cas*_*er 2 attributes ldap filter active-directory powershell-4.0
我尝试使用空属性telephoneNumber(如(多属性查询))搜索所有用户。在互联网上,我发现了很多关于 PowerShell 和 LDAP 的内容,但它们非常复杂,而且没有任何效果。
LDAP 过滤器有一个丑陋的语法,但是一旦你理解了它们的结构,它们就不那么困难了。基本上,每个子句都放在一组括号中:
(attribute=value)
Run Code Online (Sandbox Code Playgroud)
子句可以否定:
(!(attribute=value))
Run Code Online (Sandbox Code Playgroud)
并且多个子句可以通过逻辑 AND 或 OR 操作组合:
(&(attribute=somevalue)(otherattribute=othervalue)...)
(|(attribute=somevalue)(otherattribute=othervalue)...)
Run Code Online (Sandbox Code Playgroud)
要过滤空属性,您需要一个 LDAP 过滤器,说明“属性telephoneNumber没有任何值”:
(!(telephoneNumber=*))
Run Code Online (Sandbox Code Playgroud)
星号 ( *) 是任意非空值的通配符。否定该条款会给你你想要的。对于更复杂的过滤器,您可以创建类似上述的子句(每个属性一个),并将它们与(&...)和/或(|...)根据您的要求组合。
示例(获取具有空telephoneNumber或mail属性的用户):
Get-ADUser -LDAPFilter '(|(!(telephoneNumber=*))(!(mail=*)))'
Run Code Online (Sandbox Code Playgroud)
另一种选择是获取所有用户并使用Where-Object过滤器来选择具有所需属性的用户。
示例(再次,获取具有空telephoneNumber或mail属性的用户):
Get-ADUser -Filter * -Properties * | Where-Object {
-not $_.telephoneNumber -or
-not $_.mail
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6452 次 |
| 最近记录: |