AD 帐户的 LDAP 过滤器

AD 帐户的 LDAP 过滤器

我想获取所有未过期且密码为空白的广告用户帐户。

到目前为止,我已经使用 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)))

答案3

相关内容