2013-02-25 145 views
0

我用下面的一行得到谁不会被禁用,且其账户到期,一些性能的用户的列表:PowerShell脚本忽略过滤

Get-ADUser -Filter {(Enabled -eq $true) -and (accountExpires -ne 0)} -Properties name, mail, c, physicalDeliveryOfficeName, telephoneNumber, manager, title, description | select-object name, mail, c, physicalDeliveryOfficeName, telephoneNumber, manager, title, description 

它的工作原理,但它抓住我网域的所有人,而不仅仅是其帐户到期所指示的。为什么它忽略脚本的accountExpires部分?

回答

2

原因导致错误的结果是你的错误的假设,每一个未过期的帐户在accountExpires属性值0。在我的测试中,只适用于管理员。 每隔帐户有[int64]::MaxValue有 - 所以你需要包括这在你的过滤器:

$Max = [int64]::MaxValue 
Get-ADUser -Filter { 
    (Enabled -eq $true) -and 
    (accountExpires -ne 0) -and 
    (accountExpires -ne $Max) 
} 
+0

谢谢,除了这抓住所有做到期账户;与我想要的相反。 有没有办法扭转这种? – Pickle 2013-02-26 14:25:10

+0

倒车它应该是通过反转过滤器的逻辑容易'...) - 和((acountExpires -eq 0) - 或(accountExpires -eq $最大))' – BartekB 2013-02-28 18:03:29