Powershell Get-ADGroup mit vertrauter Domäne

Andreas Sperling 40 Zuverlässigkeitspunkte
2024-03-22T14:00:29.0266667+00:00

Hallo zusammen,
ich nutze folgenden Code um eine Liste mit allen AD-Gruppen und deren Mitglieder zu ermitteln.

#Diese Powershell Datei liefert die alle Mitglieder von AD-Gruppen
$data = @()
Get-ADGroup -Filter * | %{
    $members = (Get-ADGroupMember $_.SamAccountName -Recursive -EA SilentlyContinue | select -Expand Name) -join ';'
    $data += New-Object PSObject -Property @{'Gruppe' = $_.Name;'Mitglieder' = $members}
}
$data |Export-CSV -Path \\sv001\test\'AllGroupMember.txt' -Encoding 'utf8' -NoTypeInformation -Delimiter  ';'

das funktioniert auch super, solange in keiner Sicherheitsgruppe ein User einer vertrauten Domäne ist.

Ich habe das mal auf zwei Testgruppen reduziert.

$data = @()
Get-ADGroup -Filter {name -like "*-Test-Gruppe"} | %{
    $members = (Get-ADGroupMember $_.SamAccountName -Recursive -EA SilentlyContinue | select -Expand Name) -join ';'
    $data += New-Object PSObject -Property @{'Gruppe' = $_.Name;'Mitglieder' = $members}
}

User's image

In der 00-TestGruppe sind zwei User: test.User1;test.User2
In der 01-TestGruppe sind drei User: test.User3;test.VertrauterDomUser

Das Ergebnis ist eine Wiederholung des Inhalts von der vorherigen Gruppe.

"Gruppe";"Mitglieder"

"00-Test-Gruppe";"test.User1;test.User2"

"01-Test-Gruppe";"test.User1;test.User2"

Hat Jemand eine Idee wie ich das in den Griff bekomme?
Meine Powershell Kenntnisse sind aber sehr bescheiden.

Gruß
Andreas

Windows für Unternehmen | Windows Server | Benutzerfreundlichkeit | PowerShell
0 Kommentare Keine Kommentare

2 Antworten

Sortieren nach: Am hilfreichsten
  1. Anonym
    2024-03-25T07:41:31.3833333+00:00

    Hi.,

    Das Skript sieht für mich gut aus. Es scheint ein Problem mit dem Cmdlet get-adgroupmember zu sein. Bitte prüfen Sie, ob diese Funktion der AD-Benutzer der vertrauenswürdigen Domänen abrufen kann.

    Function Get-ADGroupMemberFix {
        [CmdletBinding()]
        param(
            [Parameter(
                Mandatory = $true,
                ValueFromPipeline = $true,
                ValueFromPipelineByPropertyName = $true,
                Position = 0
            )]
            [string[]]
            $Identity,
    
            [string]
            $Server
        )
    
        begin {
            $additionalArguments = @{}
            if($PSBoundParameters.ContainsKey('Server')){
                $additionalArguments['Server'] = $Server
            }
        }
    
        process {
            foreach ($GroupIdentity in $Identity) {
                $Group = $null
                $Group = Get-ADGroup -Identity $GroupIdentity -Properties Member @additionalArguments
                if (-not $Group) {
                    continue
                }
                Foreach ($Member in $Group.Member) {
                    Get-ADObject $Member 
                }
            }
        }
    }
    

    https://stackoverflow.com/questions/58221736/powershell-5-1-16299-1146-get-adgroupmember-an-operations-error-occurred

    Ian Xue


    Wenn die Antwort hilfreich ist, klicken Sie bitte auf "Annahme der Antwort" und bewerten Sie sie hoch.

    War diese Antwort hilfreich?

    0 Kommentare Keine Kommentare

  2. Dominik Hasenkopf 5 Zuverlässigkeitspunkte
    2024-03-24T06:35:04.72+00:00

    Hi,

    du kannst jeweils nur eine Domäne abfragen. du kannst also foreach verwenden, um alle Domänen für jede Gruppe zu durchlaufen. hier ist ein Beispiel :)

    $domains = @("localDomain.local", "trustDomain.local")
    
    $groups = Get-ADGroup -Filter { name -like "*-Test-Gruppe" } 
    $data = @();
    foreach ($group in $groups) {
      $members = $null;
    
      foreach ($domain in $domains) {
        $members += (Get-ADGroupMember $group.SamAccountName -Server $domain -Recursive -EA SilentlyContinue | select -Expand Name) -join ';'
      }
      $data += [PSCustomObject]@{
        name       = $group.name
        Mitglieder = $members
    
    
      }
    }
    
    $data
    
    

    War diese Antwort hilfreich?


Ihre Antwort

Antworten können von Fragestellenden als „Angenommen“ und von Moderierenden als „Empfohlen“ gekennzeichnet werden, wodurch Benutzende wissen, dass diese Antwort das Problem des Fragestellenden gelöst hat.