Usuário com melhor resposta
Listar grupos que um grupo faz parte

Pergunta
-
Grato pela ajuda Fabio, funcionou perfeitamente.
Outra duvida, seria possível obter um resultado igual a este mas para listar os grupos de qual o grupo faz parte?
Mais uma vez obrigado
Observação da Moderação:
Tópico divido por ter sido postado em tópico já respondido:
- Dividir Fábio JrModerator segunda-feira, 16 de julho de 2012 21:30 Aberto em tópico respondido
- Editado Fábio JrModerator segunda-feira, 16 de julho de 2012 21:31 Aberto em tópico já encerrado
Respostas
-
Amigo , no inicio o powershell é complicado mas após entender o basico você percebe que ele é muito intuitivo...
vamos lah!
Iniciando execute o powershell como administrador, nele execute o comandoimport-module activedirectory
Porque? o powershell possui diversos modulos, cada ferramenta tem o seu AD,IIS etc... importando os modulos você está carregando os cmdlets (comandos) do AD para sua sessão de powershell.
bem o powershell segue uma logica nos comandos, por exemplos comandos para ler alguma informação começam com get- e para alterar set- remover remove- criar algo novo new-
e geralmente após o nome da ferramenta exemplo do ad get-ad*** ai vem os objetos do proprio ad. o comando que vai te ajudar muito no inicio é o get-command que traz os comandos disponiveis na sessao, então sabendo que queremos pegar algo do ad pode executar o seguinte comandoget-command get-ad*
que vai nos retornar todos comandos do ad que retornam algum tipo de dado..
nessa lista vamos achar o Get-ADGroup que parece ser o que queremos....então para entender mais sobre esse comando executamos get-help get-adgroup -examples
voce pode trocar o -examples por -full -detailed etc..analisando o resultado do get-help podemos formular o comando
Get-ADGroup -Filter *
que vai nos retornar todos os grupos do AD, agora que vem o pulo do gato, o powershell trabalha com Objetos para quase tudo! ou seja ele não está te retornando somente um texto na tela como cmd mas sim um objeto com propriedades que você pode manipular e jogar para outros comandos,
entao vamos continuar...precissamos que para cada grupo que o powershell traga do comando get-adgroup ele crie um txt e pegue os membros , ok? utilizamos um FOREACH para isso
Começando de forma simples
Get-ADGroup -Filter * | Foreach-Object { write-host "Grupo:"$_.Name }
quando passamos a saida de um comando utilizando uma | para outro comando ele passa os objetos nesse caso ele está passando os objetos para o foreach, quanto passamos objetos com a | ele vai executer um a um dos objetos retornados do primeiro comando, o objeto que ele passa fica sendo referenciado como $_ ,os objetos possuem propriedades, como vimos quando executamos o get-adgroup que a propriedade NAME tinha o nome do grupo dizemos que queremos a propriedade name do objeto que esta sendo passado pela | $_.Name
caso queria saber todas propriedades de um objeto voce pode executar (get-adgroup -filter * | FL *)[0] (OBS: pus entre paretes e com o [0] para listar so do primeiro objeto que o comando retorna senao ele traria todas propriedades de todos objetos o que ia encher tela... como entre os objetos retornados pelo mesmo comando so mudam os VALOREs e nao as propriedades pode ver so do primeiro que ja server.)
Agora o powershell já escreveu nome do grupo, o que queremos é pegar os membros voltamos ao que lemos acima lembra do get-command?
então get-command get-ad* , vamos procurar por algo com membros na lista e vamos achar o Get-Get-ADGroupMember, então está facil neh?
Get-ADGroup -Filter * | Foreach-Object {
write-host "Grupo:"$_.Name ;
write-host "Membros";Get-ADGroupMember $_
}Ok, agora ele retornou todos grupos e todos membros de cada grupo porem ele retornou o objeto do membro completo e queremos só o nome, o que fazemos? jogamos para uma | e filtramos exatamente como feito no grupo
Get-ADGroup -Filter * | Foreach-Object {
write-host "Grupo:"$_.Name ;
write-host "Membros";Get-ADGroupMember $_ | foreach-object {
write-host "Membro:"$_.Name }}
Agora o script é facil alterar para ele jogar em um arquivo... so troque os write-host por um
echo "Grupo:"$_.name >> c:\x.txt
tente fazer a parte sosinho o restante qualquer coisa prende o grito :D
Meu Blog: http://howtoserver.com Minhas Ceritificações: 73-642,73-640
- Sugerido como Resposta Fábio JrModerator quarta-feira, 18 de julho de 2012 19:51
- Não Sugerido como Resposta Fábio JrModerator quarta-feira, 18 de julho de 2012 19:53
- Marcado como Resposta RCirino quarta-feira, 25 de julho de 2012 12:21
Todas as Respostas
-
-
-
-
Boa noite, Matheus tenho certeza que no PowerShell deve ser mais fácil, porém não tenho habilidade nenhuma com ele.
Por exemplo, como eu faço para gerar um txt de cada grupo contendo os grupos do qual ele faz parte? Além disso queria automatizar a tarefa de colocar grupos dentro de outros grupos baseado no resultado acima, seria possível com powershell? Como fazer?
Obrigado pela ajuda
-
que azar amigo estava respondendo e meu computador travou heheh, ja formulo uma explicação novamente, pode dar uma olhada no meu blog enquanto isso
http://howtoserver.com/category/microsoft/powershell/
Meu Blog: http://howtoserver.com Minhas Ceritificações: 73-642,73-640
-
Amigo , no inicio o powershell é complicado mas após entender o basico você percebe que ele é muito intuitivo...
vamos lah!
Iniciando execute o powershell como administrador, nele execute o comandoimport-module activedirectory
Porque? o powershell possui diversos modulos, cada ferramenta tem o seu AD,IIS etc... importando os modulos você está carregando os cmdlets (comandos) do AD para sua sessão de powershell.
bem o powershell segue uma logica nos comandos, por exemplos comandos para ler alguma informação começam com get- e para alterar set- remover remove- criar algo novo new-
e geralmente após o nome da ferramenta exemplo do ad get-ad*** ai vem os objetos do proprio ad. o comando que vai te ajudar muito no inicio é o get-command que traz os comandos disponiveis na sessao, então sabendo que queremos pegar algo do ad pode executar o seguinte comandoget-command get-ad*
que vai nos retornar todos comandos do ad que retornam algum tipo de dado..
nessa lista vamos achar o Get-ADGroup que parece ser o que queremos....então para entender mais sobre esse comando executamos get-help get-adgroup -examples
voce pode trocar o -examples por -full -detailed etc..analisando o resultado do get-help podemos formular o comando
Get-ADGroup -Filter *
que vai nos retornar todos os grupos do AD, agora que vem o pulo do gato, o powershell trabalha com Objetos para quase tudo! ou seja ele não está te retornando somente um texto na tela como cmd mas sim um objeto com propriedades que você pode manipular e jogar para outros comandos,
entao vamos continuar...precissamos que para cada grupo que o powershell traga do comando get-adgroup ele crie um txt e pegue os membros , ok? utilizamos um FOREACH para isso
Começando de forma simples
Get-ADGroup -Filter * | Foreach-Object { write-host "Grupo:"$_.Name }
quando passamos a saida de um comando utilizando uma | para outro comando ele passa os objetos nesse caso ele está passando os objetos para o foreach, quanto passamos objetos com a | ele vai executer um a um dos objetos retornados do primeiro comando, o objeto que ele passa fica sendo referenciado como $_ ,os objetos possuem propriedades, como vimos quando executamos o get-adgroup que a propriedade NAME tinha o nome do grupo dizemos que queremos a propriedade name do objeto que esta sendo passado pela | $_.Name
caso queria saber todas propriedades de um objeto voce pode executar (get-adgroup -filter * | FL *)[0] (OBS: pus entre paretes e com o [0] para listar so do primeiro objeto que o comando retorna senao ele traria todas propriedades de todos objetos o que ia encher tela... como entre os objetos retornados pelo mesmo comando so mudam os VALOREs e nao as propriedades pode ver so do primeiro que ja server.)
Agora o powershell já escreveu nome do grupo, o que queremos é pegar os membros voltamos ao que lemos acima lembra do get-command?
então get-command get-ad* , vamos procurar por algo com membros na lista e vamos achar o Get-Get-ADGroupMember, então está facil neh?
Get-ADGroup -Filter * | Foreach-Object {
write-host "Grupo:"$_.Name ;
write-host "Membros";Get-ADGroupMember $_
}Ok, agora ele retornou todos grupos e todos membros de cada grupo porem ele retornou o objeto do membro completo e queremos só o nome, o que fazemos? jogamos para uma | e filtramos exatamente como feito no grupo
Get-ADGroup -Filter * | Foreach-Object {
write-host "Grupo:"$_.Name ;
write-host "Membros";Get-ADGroupMember $_ | foreach-object {
write-host "Membro:"$_.Name }}
Agora o script é facil alterar para ele jogar em um arquivo... so troque os write-host por um
echo "Grupo:"$_.name >> c:\x.txt
tente fazer a parte sosinho o restante qualquer coisa prende o grito :D
Meu Blog: http://howtoserver.com Minhas Ceritificações: 73-642,73-640
- Sugerido como Resposta Fábio JrModerator quarta-feira, 18 de julho de 2012 19:51
- Não Sugerido como Resposta Fábio JrModerator quarta-feira, 18 de julho de 2012 19:53
- Marcado como Resposta RCirino quarta-feira, 25 de julho de 2012 12:21
-
-
-
-
Só pra acerscentar
http://gallery.technet.microsoft.com/Localizar-os-usuarios-que-6e5a1b45
O mundo é uma "janela" de oportunidades
-
Bom dia
Matheus, deu certo, desculpe a demora na resposta, é que estou envolvido nesta migração e o tempo está curto.
Acontece que no outro dominio só terei acesso a uma OU e preciso criar os usuários e grupos, isso já fiz com scripts, só não consegui uma forma incluir os usuários de forma automatica nos novos grupos de acordo com os acessos dos grupos no antigo dominio. é possivel fazer isto usado VBS?
Abs
Ricardo