2013-02-25 149 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