Привет, у меня здесь есть этот командлет:
Get-ADUser -filter {(distinguishedName -notlike "Disabled Users") -and (enabled -eq $false)} -searchBase "ou=FirstOU,dc=domain,dc=com"
Я построил его для поиска пользователей с ограниченными возможностями, которые не входят в OU «Пользователи с ограниченными возможностями». (OU в OU)
Но по какой-то причине он возвращает не только отключенных пользователей, которых нет в «Disabled Users», но и отключенных пользователей, которые в нем тоже.
Почему не (distinguishedName -notlike "Disabled Users")
работай?
Чтобы прояснить мою структуру:
Forest
FirstOU
users,groups,etc..
Disabled Users OU
.
.
.
Ваш запрос не работает, потому что Атрибуты DN не поддерживают сопоставление подстановочных знаков в запросах LDAP (и -like
/-notlike
бесполезен без подстановочных знаков).
Вам просто нужно будет получить всех отключенных пользователей, а затем отфильтровать нежелательные учетные записи из результата:
$Disabled = Get-ADUser -Filter { useraccountcontrol -bor 2 } -SearchBase "ou=FirstOU,dc=domain,dc=com"
$Filtered = $AllDisabledUsers |Where-Object {$_.distinguishedName -notmatch "OU=Disabled Users"}
В { useraccountcontrol -bor 2 }
эквивалентен "чистому" фильтру LDAP для отключенных учетных записей:
(&(useraccountcontrol:1.2.840.113556.1.4.803:=2))
Фильтр воздействует на тип объекта, который вы пытаетесь получить, в данном случае объект User. Таким образом, ваш запрос возвращает всех отключенных пользователей, для которых dn не является «Disabled Users». Фильтр применяется к объектам «Пользователь», а не к подразделениям.
Да, конечно ... User dn будет содержать строку «Disabled Users», как правильно указал BigHomie. Настоящая проблема заключалась в отсутствии подстановочных знаков, поскольку пользовательский dn не будет в точности «Пользователи с ограниченными возможностями».
Попробуйте вместо этого:
Get-ADUser -Filter {(Enabled -eq $false)} | ? { ($_.distinguishedname -notlike '*Disabled Users*') }
Скобки и подстановочные знаки. Пытаться
PS C:\Users\BigHomie> Get-ADUser -SearchBase "OU=Users,dc=eng,dc=mit,dc=edu" -SearchScope Subtree -Filter {distinguishedname -notlike "*Disabled*"}
Обнаружен правильный синтаксис Вот