mmaiwald
Goto Top

Active Directory Gruppen auslesen

Guten Abend,

ich habe mir das Codeschnipsel geschnappt und möchte dieses noch erweitern.

$data = @()
$groups = Get-ADGroup -Filter {GroupCategory -eq 'Distribution'} -SearchBase "OU=Test,DC=YOURDOMAIN,DC=local"   
$groups | %{
    $users = (Get-ADGroupMember -Identity $_.Name -recursive | select -ExpandProperty Name) -join ","  
    $data += New-Object PSObject -Property @{"Gruppe"=$_.Name;"Benutzer"=$users}  
}
$data | export-csv 'C:\groupmembers.csv' -Delimiter ';' -NoType -Encoding UTF8  

Dazu möchte ich noch die Beschreibung der Gruppe einfügen, sodass ich dann folgende Ausgabe erhalten möchte:
Gruppe; Beschreibung; Mitglieder

Hier meine Anpassung

$data = @()
$groups = Get-ADGroup -Filter *
$groups | %{
    $users = (Get-ADGroupMember -Identity $_.Name -recursive | select -ExpandProperty Name) -join ","  
    $beschreibung = (Get-ADGroup -filter * -Properties description | select -ExpandProperty Description)
    $data += New-Object PSObject -Property @{"Beschreibung"=$beschreibung;"Mitglieder"=$users;"Gruppe"=$_.Name}  
}
$data | export-csv 'C:\temp\groupmembers.csv' -Delimiter ';' -NoType -Encoding UTF8  

Leider wird mir die Beschreibung nicht angezeigt.
Hat wer einen Rat für mich.

Grüße Mario

Content-Key: 608453

Url: https://administrator.de/contentid/608453

Printed on: April 26, 2024 at 06:04 o'clock

Member: SeaStorm
SeaStorm Sep 29, 2020 updated at 19:25:04 (UTC)
Goto Top
Hi

$beschreibung = (Get-ADGroup -filter * -Properties description

Da fehlt ein -Identity

[Edit]
Ist aber eh eine nutzlose Zeile weil du die Group ja schon hast.
Besser wäre
$groups = Get-ADGroup -Properties * -Filter *
$groups | %{
    $users = (Get-ADGroupMember -Identity $_.Name -recursive | select -ExpandProperty Name) -join ","  
    $beschreibung = $_.description
    $data += New-Object PSObject -Property @{"Beschreibung"=$beschreibung;"Mitglieder"=$users;"Gruppe"=$_.Name}  
}
Member: MMaiwald
MMaiwald Sep 29, 2020 at 19:24:57 (UTC)
Goto Top
Hi ist mir auch gerade in den Sinn gekommen.
Leider zeigt er weiterhin nichts an.

Irgendeine andere Idee
Member: SeaStorm
SeaStorm Sep 29, 2020 updated at 19:26:40 (UTC)
Goto Top
die -Properties * musste noch rein. war zu schludrig face-smile
Besser wäre eigentlich die Properties die du brauchst da anzugeben. Aber mach das mal selbst face-smile
Member: MMaiwald
MMaiwald Sep 29, 2020 at 19:27:54 (UTC)
Goto Top
Er zeigt mir lediglich die Gruppe und die Mitglieder korrekt an.
Member: SeaStorm
SeaStorm Sep 29, 2020 at 19:31:44 (UTC)
Goto Top
hast du mein edit gesehen?
$groups = Get-ADGroup -Properties * -Filter *
Member: MMaiwald
MMaiwald Sep 29, 2020 updated at 19:38:26 (UTC)
Goto Top
Ja habe die Ergänzung ausprobiert.
Leider wird weiterhin die Beschreibung nicht angezeigt.
Member: SeaStorm
SeaStorm Sep 29, 2020 at 19:56:02 (UTC)
Goto Top
Klappt bei mir ....
$data = @()
$groups = Get-ADGroup -Properties * -Filter "name -eq 'grpTestUsers'"   
$groups | %{
    $users = (Get-ADGroupMember -Identity $_.Name -recursive | select -ExpandProperty Name) -join ","  
    $beschreibung = $_.description
    $data += New-Object PSObject -Property @{"Beschreibung"=$beschreibung;"Mitglieder"=$users;"Gruppe"=$_.Name}  
}
$data 

Beschreibung    Mitglieder Gruppe      
------------    ---------- ------      
TestDescription testman    grpTestUsers
Member: MMaiwald
MMaiwald Sep 29, 2020 at 20:08:30 (UTC)
Goto Top
Ist ja interessant. Bei mir klappt es jetzt auch. Was ist jetzt anders außer der Filter?
Eine Frage der Anordnung der Ausgabe habe ich noch.

Egal wie ich diese anordne, die Reihenfolge wird mir nicht wie gewünscht angezeigt

Gruppe; Beschreibung; Mitglieder

Was kann ich tun?
Member: SeaStorm
Solution SeaStorm Sep 29, 2020 at 20:16:31 (UTC)
Goto Top
$data | select Gruppe, Beschreibung, Mitglieder | export-csv.....
Member: MMaiwald
MMaiwald Sep 29, 2020 at 20:21:54 (UTC)
Goto Top
Besten Dank, darauf hätte ich auch selbst kommen können face-wink

Schönen Abend
Member: MMaiwald
MMaiwald Sep 29, 2020 at 20:22:53 (UTC)
Goto Top
$data = @()
$groups = Get-ADGroup -Properties * -Filter * 
$groups | %{
    $users = (Get-ADGroupMember -Identity $_.Name -recursive | select -ExpandProperty Name) -join ","  
    $beschreibung = $_.description
    $data += New-Object PSObject -Property @{"Gruppe"=$_.Name;"Beschreibung"=$beschreibung;"Mitglieder"=$users}  
}
$data | select Gruppe, Beschreibung, Mitglieder | Export-Csv 'C:\temp\groupmembers.csv' -Delimiter ';' -NoType -Encoding UTF8  
Mitglied: 145916
145916 Sep 30, 2020 updated at 08:37:57 (UTC)
Goto Top
Lässt sich auf einen Einzeiler reduzieren, ist auch schneller als erst ein Array immer wieder mit += zu füllen, dass ist im Speicher ein großer Aufwand weil bei jedem += das Array im Speicher zerstört werden und ein neues aufgebaut werden muss face-wink
Get-ADGroup -Filter * -Properties Description | select @{n='Gruppe';e={$_.Name}},@{n='Beschreibung';e={$_.Description}},@{n='Mitglieder';e={(Get-ADGroupMember -Identity $_.Name -recursive | select -Expand Name) -join ","}} | Export-Csv 'C:\temp\groupmembers.csv' -Delimiter ';' -NoType -Encoding UTF8