Powershell奇怪的结果有两个“-Filter”条件

时间:2016-05-19 18:12:36

标签: powershell filter

我想从我的查询中排除两个单词,但是我得到了一些奇怪的结果。为了表明这一点,我使用了两个不存在的描述值。

首先:

(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管道它会起作用,但我想知道诀窍在哪里。

1 个答案:

答案 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