O comando DSQUERY é usando principalmente para fazer pesquisas avançadas de usuários, grupos, computadores, OU, sites, e outros no domínio com o critério que você especifica.
Vamos começar com alguns exemplos simples
- Para achar todos os computer inativos nos últimos 4 semanas:
dsquery computer -inactive 4
- Para achar todos os usuários em um certo OU no dominio Microsoft.com:
dsquery user OU=Marketing,DC=Microsoft,DC=Com
- Para ler todos os atributos de um objeto cujo CN é conhecido como OU=teste,DC=tekniblog,DC=Com por exemplo
dsquery * OU=teste,DC=tekniblog,DC=Com -scope base -attr *
Exemplos combinados e mais avançados:
Usar o comando DSQUERY USER simples ( sem pipes) para mostrar um certo usuário cujo nome é parcialmente desconhecido.
1- Mostrar todos os usuários cujo nome começa com joao em uma certo ouo o no Domínio inteiro.
este comando procura todos os nomes no dominio que tem natalino como primeiro nome
dsquery user domainroot -name natalino*
“CN=Natalino Joao da Silva,OU=Users,OU=ADMIN,DC=MEUDOMINIO,DC=LOCAL”
este comando procura o natalino no OU users
dsquery user ou=users,ou=admin,dc=MEUDOMINIO,DC=LOCAL -name natalino*
2- Para procurar todas as pessoas cujo nome termina com silva fazemos as mesmas pesquisas e só mudamos a posição do asterisco pondo o em frente do nome, exemplo
dsquery user domainroot -name *silva
e
dsquery user ou=users,ou=admin,dc=MEUDOMINIO,DC=LOCAL -name *silva
3– Usar DSQUERY com DSGET para mostrar os GRUPOS de um usuário
Com um usuário em mente podemos fazer uma query para mostrar que grupos que esse user pertence. Primeiro usamos o comando dsquery só para pesquisar se existe no domínio:
dsquery user dc=MEUDOMINIO,dc=LOCAL -name nassim*
o resultado irá listar todos os nomes no domínio que coeçam com nassim em formato CN, exemplo:
cn=nassim dhaher,ou=usuario,ou=suporte,dc=meudominio,dc=local
agora vamos ver em que grupos o usuário pertence
dsquery user dc=MEUDOMINIO,dc=LOCAL -name nassim* | dsget user -memberof
o resultado irá listar todos os grupos em formato CN também.
“CN=Domain Users,CN=Users,DC=meudominio,DC=local”
“CN=Domain Admins,CN=Users,DC=meudominio,DC=local”
“CN=Enterprise Admins,CN=Users,DC=meudominio,DC=local”
4- Listar as contas de usuários em um certo OU, mostrando o SAMID
o comando usa uma dsquery com uma dsget utilizando um pipe | (shift+z) para listar os SIDs (usados para efetuar os logins)
dsquery user ou=users,ou=MEUOU,dc=MICROSOFT,dc=COM |dsget user -samid
para uma lista com mais de 100 objetos basta acrescentar -limit 300(o número dependo do número dos objetos).
* para ver os usuarios com conta bloqueiada acrescente -disabled do comando, este vai dar duas colunas uma com o samid e uma com o status, disabled -yes ou no.
dsquery user ou=users,ou=MEUOU,dc=MICROSOFT,dc=COM |dsget user -samid -disabled
5- Usando dsquery e dsmod para settar o HomeDrive e HomeDirectory
este comando usa dsquery para fazer uma pesquisa dos nomes em um certo OU (Unidade Organizacional – Organizational Unit). Usamos o Pipe ” | ” (shift+\) para mandar o resultado para o comando dsmod que fará algumas alterações nos dados .
dsquery user ou=users,ou=MEUOU,dc=MICROSOFT,dc=COM | dsmod user -hmdir \\meu servidor\arquivos -hmdrv z:
neste exemplo todos os usuários no MEUOU terão um novo homedrive (z:) e uma nova past(a \\meuservidor\meusarquivos) de mapeamento para o drive.
se tiver mais de 100 usuários no OU basta acrescentar -limit 200 (200 é um exemplo ) antes do comando pipe | (shift + \).
e aí fica
dsquery user ou=users,ou=MEUOU,dc=MICROSOFT,dc=com -limit 200 |dsmod user -hmdir \\meu servidor\arquivos -hmdrv z:
para saber mais sobre dsquery use o comand de ajudo
dsquery /?
7- Usar o dsquery com o dsmod para não permitir que os usuários alterarem as suas senhas
dsquery user ou=users,ou=MEUOU,dc=MICROSOFT,dc=com -limit 200 |dsmod user -canchpwd no
observação: o uso de de canchpwd com a opção não (canchpwd no) conflita com o uso de mustchpwd com a opção sim (mustchpwd yes). Quem está com a opção de um não pode ter o outro ao mesmo tempo porque um usuário que tem que alterar a sua senha no próximo login não pode ser negado de alterar a sua senha.
Em seguida ao tentar o seguinte comando com o acima citado vamos receber um erro.
dsquery user ou=users,ou=MEUOU,dc=MICROSOFT,dc=com -limit 200 |dsmod user -mustchpwd yes
—————————
Última atualização 28/07/2011
Olá!
Gostaria de saber se tem alguma maneira de via comando dsquery estar pegando os computadores inativos com suas respectivas datas de modificação. Por exemplo:
DSQUERY COMPUTER -INACTIVE 4 -LIMIT 0 | DSQUERY COMPUTER -ATTR WHENCHANGED > C:\relatorio.txt
Tentei via dsget e ele não pega por atributo, eu queria que ele exibisse os computadores inativos e suas datas de modificação.
Sabe algum jeito?
Att.,
Priscila
Olá Priscila
acredito que sem usar um script VBS ou powershell não tem como fazer isso.
vê esse link com uma solução usando um script powershell
http://gallery.technet.microsoft.com/scriptcenter/6b8163d1-5fae-43b5-a664-a2d1f6e1e2da (leia as discussões sobre o script)
vê também essa ferramenta de terceiro
http://www.manageengine.com/products/ad-manager/cleanup-your-active-directory.html
Amigo desculpa ressuscitar o post…
Mas tem como eu fazer por linha de comando pegar todos os computadores que estão inativos por mais de 4 semanas e jogar em outra OU??
dsquery computer -inactive 4 -limit 1000 |dsmove -newparent “OU=Computadores Bloqueados,DC=domain,dc=com”
Tou fazendo assim mais não tá indo…pode ajudar?
Olá Bryan, desculpa a demora, teste este comando
dsget computer ou=computadores,ou=ondeesta,dc=dominio,dc=com -inactive 4 -limit 1000 |dsmove computer -newparent “OU=Computadores Bloqueados,DC=domain,dc=com”
estou sem acesso no momento a um dos AD’s para testar más acho que vai dar certo.
tem como lista todos usuários do ad e exibir os grupos que ele pertence, incluindo o display name e nome da conta
Olá Ranieri, acredito que já deva ter conseguido obter sua informação. Bom, recentemente, tive a mesma necessidade e a resolvi com o seguinte comando:
dsquery user -limit 10000 | dsget user -samid -upn -fn -ln -desc > lista.txt (coloquei o limit 10.000 pq tenho muitos usuários ativos e inativos na rede). Abraço.
Amigo, Precisava fazer a seguinte coisas, 1 criar usuarios em massa porém conta temporária com uma data derminada ex 90 dias ou configurar no proprio AD que todos usuarios temporario criado ele seja criado com tempo de 90 dias.
Entendeu
Obrigado, estou de acordo com as sugestões acima mencionadas, além disso, você pode tentar este utilitário (http://www.lepide.com/active-directory-cleaner/) para limpar seus usuários inativos e contas de computador.
Boa Tarde Amigo, conseguir pelo comando dsquery buscar todos usuarios que esta na ou, agora preciso remover todo os grupos deles, tem como fazer isso?