Início > Active Directory, Microsoft > Listando grupos vazios no Active Directory

Listando grupos vazios no Active Directory

 

Listando grupos globais de segurança vazios

DSQuery * -Filter "(&(sAMAccountType=268435456)(!member=*))" -Limit 0

 

Listando grupos locais de segurança vazios

DSQuery * -Filter "(&(sAMAccountType=536870912)(!member=*))" -Limit 0

 

Listando grupos de distribuição vazios

DSQuery * -Filter "(&(sAMAccountType=268435457)(!member=*))" -Limit 0

 

Listando qualquer grupo vazio

DSQuery * -Filter "(&(objectClass=group)(!member=*))" -Limit 0

 

O problema com os métodos acima, é que os grupos padrões (built-in) do Windows são exibidos, mesmo não estando vazios. Voltei à estaca zero.

A saída então seria um script. Após buscar um pouco, achei um script parecido que era utilizado para listar membros de um grupo e comecei as alterações. Quando estava pronto, notei que o mesmo acontecia. Os grupos padrões do Windows eram listados.

Um pouco de pesquisa me mostrou o que estes grupos tem em particular. O atributo "member" fica vazio, mesmo se existem usuários no grupo. Um grupo comum, criado por mim, e com um usuário, tem o atributo "member" atualizado. Veja nas figuras abaixo.

 

clip_image001

clip_image002

 

Bem, isto não é bug. Não descobri ainda o motivo destes grupos não utilizarem o atributo member, mas estou certo de que não é um "defeito". Me parece algo que é assim por padrão, intencionalmente ou, como dizem lá pelos EUA: by design.

A questão é, como resolver o problema? Bem, eu não vi outra opção senão insistir no script. Catando milho (o exemplo inicial que eu tinha era em vbscript, que eu não domino muito bem), fui em frente. Minha idéia era fazer uma lista de grupos que deveriam ser excluídos da listagem, uma espécie de lista negra.

Foi daí que saiu o resultado final, disponível no Banco de Scripts. O script vai funcionar bem se você estiver utilizando um Windows em inglês (por conta dos nomes dos grupos estarem em inglês). Se você está utilizando uma versão em português, deve alterar o array aBuiltInGroups com os respectivos nomes em português.

Você também precisará alterar a seguinte linha:

"SELECT Name,Member FROM ‘LDAP://dc=rustice,dc=local‘ WHERE objectCategory=’group’"

O texto em destaque deve ser alterado para refletir o nome do distinguished name do seu domínio. Se o seu domínio é empresa.com.br, mude para:

"SELECT Name,Member FROM ‘LDAP://dc=empresa,dc=com,dc=br‘ WHERE objectCategory=’group’"

  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: