我想从我的查询中排除两个单词,但是我得到了一些奇怪的结果。为了表明这一点,我使用了两个不存在的描述值。
首先:
(Get-ADUser -Filter {(description -like "*fffffffffff*") -or (description -like "*rrrrrrrrrr*")} -properties *).count
=> 没有结果(没关系)
然后:
(Get-ADUser -Filter {(description -notlike "*fffffffffff*") -and (description -notlike "*rrrrrrrrrr*")} -properties *).count
=> 300 (为什么?!)
最后:
(Get-ADUser -Filter * -properties *).count
=> 1090 - 此结果正常(AD中的用户总数)
也许使用where-object
管道它会起作用,但我想知道诀窍在哪里。
答案 0 :(得分:1)
我无法测试此atm。但考虑到description -like "*"
会向用户返回 description
- 属性中的值,而description -notlike "*"
只返回用户没有值的用户,我猜你在域中有300个用户,description
- 属性中有一个值(任意值)。
为所有用户提供电子邮件属性:
Get-ADUser -filter 'email -like "*"'
获取所有没有电子邮件属性的条目:
Get-ADUser -Filter 'Email -notlike "*"'
来源:about_ActiveDirectory_Filter
尝试(Get-ADUser -Filter { description -like "*" } -properties *).count
进行验证。
#Has fffffffffff or rrrrrrr in description
(Get-ADUser -Filter {(description -like "*fffffffffff*") -or (description -like "*rrrrrrrrrr*")} -properties *).count
0
#Do not have fffffff or rrrrrr in description, but DOES have a description-value
(Get-ADUser -Filter {(description -notlike "*fffffffffff*") -and (description -notlike "*rrrrrrrrrr*")} -properties *).count
300
#Any user
(Get-ADUser -Filter * -properties *).count
1090