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?

Ben
fonte
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.

entusiasta em série
fonte
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
---------------------------------------------------
P.Brian.Mackey
fonte
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:"
Doug
fonte
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 .

Mau funcionamento grave
fonte
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
Ross Presser
fonte
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

Use Powershell: Windows Powershell trabalhando com Active Directory

Dica rápida - Determinando a associação ao grupo AD usando o PowerShell

Trigo mitch
fonte
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.
SherlockSpreadsheets
fonte