Obtenha grupos do Active Directory não truncados do usuário na linha de comando


90

Costumo usar o net usercomando para dar uma olhada nos grupos AD para um usuário:

net user /DOMAIN <username>

Isso funciona bem, no entanto, os nomes dos grupos são truncados para cerca de 20 caracteres. E na minha organização, a maioria dos nomes de grupos são muito mais longos do que isso.

Alguém conhece uma maneira de obter grupos do AD não truncados por meio da linha de comando?


1
Com base na data desta pergunta, acho que o truncamento de 20 caracteres não é mais uma coisa, pois a execução desse comando retornou grupos com nomes maiores. A resposta abaixo whoami /groupstambém é boa. Mas ele lista apenas os grupos de usuários conectados no momento. No entanto, falsificação de identidade e programação inteligente podem contornar isso;)
Richard Barker

2
Executei-o para um usuário no domínio da minha org; O truncamento de 20 caracteres ainda é um problema.
SherlockSpreadsheets de

Boa pergunta, Aguado!
Bart

Respostas:


-9

Você pode analisar a saída do comando GPRESULT.


67
Sem um exemplo, esta é uma resposta inútil
qujck

8
Mas é a resposta inútil correta ... aparentemente.
Warlord 099

Não mostra os grupos AD. Mostra muitas outras coisas, mas não os grupos AD.
João Rocha

Gente, na época (perguntado e respondido em 2009), essa pode ter sido a única maneira de realmente fazer o que o OP precisava. Observe que ele menciona o truncamento após 20 caracteres no nome do grupo.
Richard Barker

@RichardBarker: O truncamento ainda está acontecendo com o NET USER em 2019.
Ross Presser

108

GPRESULTé o comando certo, mas não pode ser executado sem parâmetros. /vou a opção detalhada é difícil de gerenciar sem também gerar a saída para um arquivo de texto. EG, eu recomendo usar

gpresult /user myAccount /v > C:\dev\me.txt- Garantir que C: \ Dev \ me.txt existe

Outra opção é exibir apenas informações resumidas que podem estar totalmente visíveis na janela de comando:

gpresult /user myAccount /r

As contas estão listadas sob o título:

The user is a part of the following security groups
---------------------------------------------------

6
Esta deve ser a resposta
LT

1
Se estiver procurando por uma string específica, você pode usar em findstrvez de redirecionar a saída para um arquivo e depois pesquisar o arquivo. Por exemplo gpresult /user myAccount /r | findstr mySearchString,.
Jesse,

2
Quando eu executo isso para minha conta de usuário, é ótimo e posso ver os grupos de segurança. Quando o executo para outra conta de usuário, o comando retorna: O usuário "userNameHere" não possui dados RSOP.
SherlockSpreadsheets de

59

Um post um pouco velho, mas eu descobri que diabos. O "whoami" atende às suas necessidades?

Eu descobri sobre isso hoje (na mesma pesquisa no Google que me trouxe aqui, na verdade). O Windows tem uma ferramenta whoami desde o XP (parte de um kit de ferramentas adicional) e está integrada desde o Vista.

whoami /groups

Lista todos os grupos do AD para o usuário conectado no momento. Acredito que seja necessário que você esteja conectado como esse usuário, portanto, isso não ajudará se seu caso de uso exigir a capacidade de executar o comando para ver outro usuário.

Apenas nomes de grupo:

whoami /groups /fo list |findstr /c:"Group Name:"

Eu tenho usado WhoAmIpara obter meu nome de usuário por um longo tempo, apenas para perceber HOJE que você pode fazer muito mais com ele! Obrigado.
MaYaN

3
liste apenas nomes de grupos: for /f "tokens=1 delims=," %g in ('whoami /groups /fo csv /nh') do @echo "%~g"(observação: use em %%vez de %no arquivo em lote)
Lectrode

perfeito! Não hesite em oferecer novas respostas para postagens obsoletas!
Bart

5

Ou você pode usar dsquery e dsget :

dsquery user domainroot -name <userName> | dsget user -memberof

Para recuperar associações de grupo mais ou menos assim:

Tue 09/10/2013 13:17:41.65
C:\
>dsquery user domainroot -name jqpublic | dsget user -memberof
"CN=Technical Support Staff,OU=Acme,OU=Applications,DC=YourCompany,DC=com"
"CN=Technical Support Staff,OU=Contosa,OU=Applications,DC=YourCompany,DC=com"
"CN=Regional Administrators,OU=Workstation,DC=YourCompany,DC=com"

Embora eu não consiga encontrar nenhuma evidência de que já instalei este pacote no meu computador, pode ser necessário instalar as Ferramentas de Administração de Servidor Remoto para Windows 7 .


1

Maneira muito mais fácil no PowerShell:

Get-ADPrincipalGroupMembership <username>

Requisito: a conta que você está executando deve ser um membro do mesmo domínio que o usuário-alvo, a menos que você especifique -Credentiale -Server(não testado).

Além disso, você deve ter o módulo Powershell do Active Directory instalado, o que, como @ dave-lucre diz em um comentário para outra resposta, nem sempre é uma opção.

Apenas para nomes de grupos, tente um destes:

(Get-ADPrincipalGroupMembership <username>).Name
Get-ADPrincipalGroupMembership <username> |Select Name

1
Ótima resposta! Isso funciona, mas não tenho certeza se torna mais fácil :). Você tem que analisar o resultado para obter uma lista de nomes de grupos (eu expandiria com isso!). Isso não é um desafio para os técnicos experientes em PS, mas o salto do lote DOS para o PS nunca é fácil!
hector-j-rivas

0

1
Você não pode fazer isso sem instalar o módulo Powershell do Active Directory (que nem sempre é uma opção)
Dave Lucre

1
Embora este link possa responder à pergunta, é melhor incluir as partes essenciais da resposta aqui e fornecer o link para referência. As respostas somente com link podem se tornar inválidas se a página vinculada mudar. - Da avaliação
Zulan

@Zulan: você está perdendo seu tempo com uma resposta de 7 anos! Não só isso, mas também parece incongruente, pois você não comentou a resposta aceita da mesma maneira.
Mitch Wheat

@MitchWheat: Você notou o From Reviewlink no final do comentário dele? Ele não comentou sobre a resposta aceita porque não a encontrou na revisão.
zondo

Eu fiz. Eu teria pensado que um revisor iria, pelo menos, verificar a resposta aceita.
Mitch Wheat

0

Com base na resposta de P.Brian.Mackey-- Tentei usar o gpresult /user <UserName> /rcomando, mas pareceu funcionar apenas para minha conta de usuário; para outros usuários de contas eu tenho esse resultado: The user "userNameHere" does not have RSOP data.

Então eu li este blog-- https://blog.thesysadmins.co.uk/group-policy-gpresult-examples.html-- e encontrei uma solução. Você deve saber o nome do computador do usuário:

gpresult /s <UserComputer> /r /user:<UserName>

Depois de executar o comando, você precisa ENTERalgumas vezes para que o programa seja concluído, pois ele fará uma pausa no meio da saída. Além disso, os resultados forneceram vários dados, incluindo uma seção para " COMPUTER SETTINGS> Applied Group Policy Objects" e depois " COMPUTER SETTINGS> Security groups" e finalmente "USER SETTINGS> security groups " (isso é o que estamos procurando com os grupos AD listados com descrições não truncadas!).

Interessante notar que GPRESULT tinha alguns membros extras não vistos no comando NET USER. Além disso, a ordem de classificação não corresponde e não é alfabética. Qualquer entidade que possa adicionar mais percepções nos comentários, isso seria ótimo.

RESULTADOS: gpresult (with ComputerName, UserName)

Por motivos de segurança, incluí apenas um subconjunto dos resultados da associação. (36 TOTAL, 12 AMOSTRA)

The user is a part of the following security groups
---------------------------------------------------
..
 Internet Email 
 GEVStandardPSMViewers  
 GcoFieldServicesEditors    
 AnimalWelfare_Readers  
 Business Objects   
 Zscaler_Standard_Access    
..
 GCM    
..
 GcmSharesEditors   
 GHVStandardPSMViewers  
 IntranetReportsViewers 
 JetDWUsers     -- (NOTE: this one was deleted today, the other "Jet" one was added)
..
 Time and Attendance Users  
..

RESULTADOS: net user /DOMAIN (with UserName)

Por motivos de segurança, incluí apenas um subconjunto dos resultados da associação. (23 TOTAL, 12 AMOSTRA)

Local Group Memberships  
Global Group memberships    ...
                             *Internet Email       *GEVStandardPSMViewers
                             *GcoFieldServicesEdito*AnimalWelfare_Readers
                             *Business Objects     *Zscaler_Standard_Acce
                             ...
                             *Time and Attendance U*GCM
                             ...
                             *GcmSharesEditors     *GHVStandardPSMViewers
                             *IntranetReportsViewer*JetPowerUsers
The command completed successfully.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.