我想获取所有未过期且密码为空白的广告用户帐户。
到目前为止,我已经使用 ldap 过滤器来获取所有过期的帐户:
(&(objectCategory=person)(objectClass=user) (!accountExpires=9223372036854775807) (!accountExpires=0))
我需要制作一个过滤器,获取所有未过期且密码为空白的帐户。
有什么建议我需要做哪些修改吗?
答案1
您是否尝试过反向搜索?希望 LDAP 专家能够帮助您找到答案,可能像这样,我只是将您的过滤器包装在(!...)
:
$filter = '(!(&(objectCategory=person)(objectClass=user) (!accountExpires=9223372036854775807) (!accountExpires=0)))'
$Users = Get-ADUser -LDAPFilter $filter
我很惊讶没有“IsExpired”属性。但是,您可以构建数组,然后按到期日期对其进行过滤。如下所示:
#List of filters, each one is a string,
#by default use single quotes unless you need to force evaluation.
#Make sure each property used is in the '-Properties' part or a default property.
$Filters = 'AccountExpires -eq $True', "AccountExpirationDate -gt $(Get-Date)"
$Users = Get-ADUser -Filter * -Properties AccountExpires, AccountExpirationDate
Foreach ($filter in $filters) {
$Users = $Users | where $filter
}
我不知道如何找到空密码。
答案2
您无法查询密码的值,但可以查询“无需密码”。
(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=32)(|(!accountExpires=*)(accountExpires>=131176944000000000)))