Nieokreślony błąd - Eksport wszystkich grup jednego użytkownika do pliku CSV

0

Pytanie

Jestem dość początkujący w powershell. Nie jestem pewien, co ja tu robię nie tak. Próba wyeksportować wszystkie grupy reklam jednego użytkownika do pliku CSV. Wiem, że to trochę trudne zakodowane, ale ja po prostu staram się zrobić coś prostego.

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

W szczególności, błąd polega na :

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

Najlepsza odpowiedź

0

Jak może widzieliście w Internecie istnieje wiele wiadomości, w których wymienione są powtarzające się problemy z Get-ADPrincipalGroupMembership.

Jeśli chcesz zobaczyć członkostwo użytkownika, najprostszy sposób-zobacz na jego MemberOf Atrybut Active Directory, ale jak chcesz uzyskać:

  • Name
  • GroupScope
  • GroupCategory

Do tego trzeba poprosić o każdą grupę z pomocą Get-ADGroup. Mogę wymyślić 2 alternatywy, z których pierwsza wykorzystuje LDADFilter aby wyszukać grupy, w których użytkownik DistinguishedName jest uczestnikiem (innymi słowy, gdzie użytkownik DN jest częścią grupy Member atrybut):

$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

Problem z takim podejściem polega na tym, że można dostać tylko te grupy, których członkiem jest użytkownik w bieżącej domenie. Jeśli użytkownik jest członkiem grupy, istniejących w innej domenie, ten kod nie będzie wyświetlać je.

Inną alternatywą, jeśli chcesz poprosić o wszystkie grupy (w bieżącej domenie i w innych domenach), której użytkownik jest członkiem, jest przesada MemberOf własność. Ten kod został przetestowany i działa dla mnie, ale nie mogę powiedzieć dokładnie, czy zadziała on dla ciebie (najprawdopodobniej regex aby uzyskać domenę DistinguishedName można poprawić, ale ja się źle z tym sobie radzę).

$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

Świetnie, właśnie to, czego szukam. Dziękuję
eric webster

@ericwebster zadowolony, aby pomóc
Santiago Squarzon

W innych językach

Ta strona jest w innych językach

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