Colchetes e curingas. Experimente
PS C:\Users\BigHomie> Get-ADUser -SearchBase "OU=Users,dc=eng,dc=mit,dc=edu" -SearchScope Subtree -Filter {distinguishedname -notlike "*Disabled*"}
A sintaxe adequada foi encontrada aqui
Olá, eu tenho este cmdlet aqui:
Get-ADUser -filter {(distinguishedName -notlike "Disabled Users") -and (enabled -eq $false)} -searchBase "ou=FirstOU,dc=domain,dc=com"
Eu o criei para encontrar usuários com deficiências que não estejam na UO "Usuários com deficiência". (uma UO dentro de uma UO)
Mas, por algum motivo, ele retorna não apenas os usuários com deficiência que não estão em "Usuários com Deficiência", mas também os usuários com deficiência que estão nele.
Por que o (distinguishedName -notlike "Disabled Users")
não funciona?
Para tornar minha estrutura clara:
Forest
FirstOU
users,groups,etc..
Disabled Users OU
.
.
.
Colchetes e curingas. Experimente
PS C:\Users\BigHomie> Get-ADUser -SearchBase "OU=Users,dc=eng,dc=mit,dc=edu" -SearchScope Subtree -Filter {distinguishedname -notlike "*Disabled*"}
A sintaxe adequada foi encontrada aqui
O filtro atua no tipo de objeto que você está tentando recuperar, neste caso, um objeto Usuário. Assim, sua consulta está retornando todos os usuários com deficiência, onde o dn não é "Usuários Desabilitados". Está aplicando o filtro aos objetos Usuário, não às UOs.
Sim, claro ... O User dn conterá a string "Usuários Desabilitados", como a BigHomie apontou corretamente. O problema real era a falta de caracteres curinga, já que o usuário dn não seria exatamente "Usuários com Deficiência"
Tente isso:
Get-ADUser -Filter {(Enabled -eq $false)} | ? { ($_.distinguishedname -notlike '*Disabled Users*') }
Sua consulta não funciona porque Os atributos do DN não suportam correspondência de caracteres curinga em consultas LDAP (e -like
/ -notlike
é inútil sem curingas).
Você simplesmente terá que recuperar todos os usuários desativados e filtrar as contas indesejadas do resultado:
$Disabled = Get-ADUser -Filter { useraccountcontrol -bor 2 } -SearchBase "ou=FirstOU,dc=domain,dc=com"
$Filtered = $AllDisabledUsers |Where-Object {$_.distinguishedName -notmatch "OU=Disabled Users"}
O { useraccountcontrol -bor 2 }
é equivalente a um filtro LDAP "puro" para contas desativadas:
(&(useraccountcontrol:1.2.840.113556.1.4.803:=2))