Powershell脚本忽略过滤器

时间:2013-02-25 21:21:24

标签: powershell active-directory

我正在使用以下单行程序来获取未被禁用且帐户过期的用户列表,其中包含一些属性:

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部分?

1 个答案:

答案 0 :(得分:2)

错误结果的原因是您错误的假设,即每个未过期的帐户在accountExpires属性中的值为0。在我的测试中仅适用于管理员。 其他每个帐户都有[int64]::MaxValue - 因此您需要在过滤器中包含此内容:

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