Я хочу получить все учетные записи пользователей рекламы, срок действия которых не истек, и у которых есть пустой пароль.
До сих пор я использовал фильтр ldap, который выбирает все учетные записи с истекшим сроком действия:
(&(objectCategory=person)(objectClass=user) (!accountExpires=9223372036854775807) (!accountExpires=0))
Мне нужно создать фильтр, который извлекает все учетные записи с неистекшим сроком действия и имеет пустой пароль.
Любые предложения, какие изменения мне нужно сделать.
Вы пробовали инвертировать поиск? Надеюсь, профессионал 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
}
Я не знаю, как найти пустые пароли.
Вы не можете запросить значение пароля, но можете запросить «Пароль не требуется».
(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=32)(|(!accountExpires=*)(accountExpires>=131176944000000000)))
Сетевой пользователь (имя пользователя) показывает данные учетной записи пользователя, пароль также является одним из них.
Проверьте ссылку ниже.