Erro não especificado - Exportação de todos os grupos do usuário para um arquivo CSV

0

Pergunta

Eu sou muito novo para powershell. Não sei o que eu estou fazendo de errado aqui. Tentando exportar todos de um usuário do AD grupos para um arquivo CSV. Eu sei que é um pouco difícil codificado, mas apenas tentando fazer algo simples.

Import-Module ActiveDirectory

$UserName = “pball“ 

$ReportPath = “C:\Input\EricsStuff\userADgroups.csv“

Get-ADPrincipalGroupMembership $Username | select name, groupcategory, groupscope | export-CSV C:\Input\EricsStuff\userADgroups.csv


# Export to :
# C:\Input\EricsStuff\userADgroups.csv

Especificamente, o Erro é :

Get-ADPrincipalGroupMembership : An unspecified error has occurred
At C:\Input\EricsStuff\ExportUserGroups.ps1:7 char:1
+ Get-ADPrincipalGroupMembership $Username | select name, groupcategory ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (pball:ADPrincipal) [Get-ADPrincipalGroupMembership], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.GetADPrincipalGroupMemb 
   ership
powershell
2021-11-23 17:28:43
1

Melhor resposta

0

Como você pode ter visto, há muitos posts pela internet mencionar problemas recorrentes com Get-ADPrincipalGroupMembership.

Se você quiser ver membros de um usuário, a maneira mais fácil é olhar para o utilizador MemberOf Atributo do Active Directory, mas já que você está olhando para começar:

  • Name
  • GroupScope
  • GroupCategory

Para tal, seria necessário consultar cada grupo usando Get-ADGroup. Existem 2 alternativas que eu possa pensar, a primeira é usando LDADFilter para procurar grupos, onde o usuário da DistinguishedName é membro (em outras palavras, onde o usuário DN faz parte do grupo Member atributo):

$UserName = "pball"
$ReportPath = "C:\Input\EricsStuff\userADgroups.csv"

$userDN = (Get-ADUser $UserName).DistinguishedName
Get-ADGroup -LDAPFilter "(member=$userDN)" |
Select-Object Name, GroupCategory, GroupScope |
Export-CSV $ReportPath

O problema com esta abordagem é que você vai obter apenas os grupos em que o usuário é um membro do Domínio atual. Se o usuário é membro de grupos que existem em um Domínio diferente, este código não exibi-los.

Outra alternativa, se você precisar consultar todos os grupos (no Domínio atual e em outros Domínios) que o usuário é membro de um loop sobre o MemberOf propriedade. Este código foi testado e funciona para mim, mas não posso dizer com certeza se ele vai funcionar para você (provavelmente o regex para obter o Domínio do DistinguishedName pode ser melhorada, mas eu sou mau com isso).

$UserName = "pball"
$ReportPath = "C:\Input\EricsStuff\userADgroups.csv"

$membership = (Get-ADUser $UserName -Properties MemberOf).MemberOf
$membership | Group-Object { ($_ -split '(?=DC=)',2)[1] } | ForEach-Object {

    [adsi]$ldap = 'LDAP://{0}' -f $_.Name
    [string]$domain = $ldap.Name

    foreach($group in $_.Group)
    {
        Get-ADGroup $group -Server $domain
    }

} |
Select-Object Name, GroupCategory, GroupScope |
Export-CSV $ReportPath
2021-11-23 21:56:00

Excelente, exatamente o que eu estou procurando. Obrigado
eric webster

@ericwebster felizes em ajudar
Santiago Squarzon

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................