estefania
Goto Top

AD-User einer AD-Gruppe auslesen und in ein File schreiben

Guten Abend.

Ich habe eine Frage an Experten.
Suche ein einfaches Script, wo mir AD-User einer von mir ausgewählten AD-Gruppe herausschreibt.
Um genauer zu sagen, soll folgendes passieren

1. Ich gebe den Namen der AD-Gruppe an
2. Die User dieser angegebenen AD-Gruppe werden in ein Textfile wie folgt aufgeschrieben

Domäne\User1;Domäne\User2;Domäne\User3 usw.

Es soll ganz vorne immer der Domänenname stehen, dann Backslash, dann Benutzername, und danach ein Semikolon

Sowas ist bestimmt realisierbar, oder?

Ich bedanke mich jetzt schon

Content-Key: 315751

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

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

Member: Knorkator
Knorkator Sep 21, 2016 updated at 06:20:37 (UTC)
Goto Top
So in etwa?

function GruppenmitgliederExport($Domäne,$ADGruppe,$dateiname)
{
$Groupmember=Get-ADGroupMember $ADGruppe | select samaccountname
foreach ($User in $GroupMember.samaccountname)
{ write-output "$Domäne\$User;" | Out-File $dateiname -Append}  
}
GruppenmitgliederExport -Domäne "Domänenname" -ADGruppe "ADGruppe" -dateiname "c:\test.txt"   

Die Zeilenumbrüche kannst Du per Notepad++ entfernen.
Ansonsten hat bestimmt jemand nen replace Befehl zu hand.
face-smile
Member: Estefania
Estefania Sep 21, 2016 at 07:00:26 (UTC)
Goto Top
Hmm.. und wie führe ich es aus? Habe es als VBS Datei abgespeichert. Nach dem Ausführen bekomme ich aber immer Kompilierungsfehler
Member: Knorkator
Knorkator Sep 21, 2016 at 07:56:06 (UTC)
Goto Top
Speicher das Script als .ps1 Datei ab und starte es auf einem Domänencontroller in der Powershell_ISE Umgebung.
Member: Estefania
Estefania Sep 21, 2016 at 08:06:02 (UTC)
Goto Top
Habe es nun als .ps1 datei abgespeichert und dann ausprobiert

test.ps1 AD-GRUPPENNAME

Danach habe ich folgendes als Antwort erhalten

Die Zeichenfolge hat kein Abschlusszeichen: ".
Zeichen:97
Member: colinardo
Solution colinardo Sep 21, 2016 updated at 09:53:18 (UTC)
Goto Top
Hallo Estefania,
er hat in der letzten Zeile ein doppeltes nicht abgeschlossenes Anführungszeichen face-wink "ADGruppe""

Für das gewünschte würde aber diese Zeile reichen:
(Get-AdGroupMember "GRUPPEXYZ" -Recursive | %{"$env:UserDomain\$($_.SamAccountName)"}) -join ';'  
Wenn das der gewünschten Ausgabe entspricht hängst du einfach noch den Befehl zu Schreiben in eine Textdatei via Pipe an:
(Get-AdGroupMember "GRUPPEXYZ" -Recursive | %{"$env:UserDomain\$($_.SamAccountName)"}) -join ';' | set-content 'C:\export.txt'  

Grüße Uwe
Member: Estefania
Estefania Sep 21, 2016 at 09:38:53 (UTC)
Goto Top
Vielen Dank

Habe nun das erste ausprobiert

(get-aduser -Filter * | %{"$env:UserDomain\$($_.SamAccountName)"}) -join ';'

Mir werden hierbei viel mehr Usernamen ausgegeben, als in dieser Gruppe stehen
Habe ich es auch richtig eingegeben?

datei.ps1 AD-Gruppenname
Member: Knorkator
Knorkator Sep 21, 2016 at 09:39:34 (UTC)
Goto Top
Zitat von @colinardo:
er hat in der letzten Zeile ein doppeltes nicht abgeschlossenes Anführungszeichen face-wink "ADGruppe""
Ups.. habe ich korrigiert

Zitat von @colinardo:
Für das gewünschte würde aber diese Zeile reichen:
> (get-aduser -Filter * | %{"$env:UserDomain\$($_.SamAccountName)"}) -join ';'  
Gefällt mir gut und ist sicherlich besser/kürzer als meine Variante.
Aber sollte das nicht so aussehen?
(Get-ADGroupMember ADGruppe | % {"$env:USERDOMAIN\$($_.SamAccountName)"}) -join ';' | out-file c:\test.txt  
Member: colinardo
colinardo Sep 21, 2016 updated at 09:43:48 (UTC)
Goto Top
Ach sorry, das hatte ich vollkommen übersehen das du "Gruppenmitglieder" möchtest, ist oben aktualisiert ...
Member: Estefania
Estefania Sep 21, 2016 at 16:02:43 (UTC)
Goto Top
Vielen Dank. Eure Hilfe hat mir einiges an Arbeit erspart face-smile

Liebe Grüße
Estefania
Member: Estefania
Estefania Sep 29, 2016 at 05:56:51 (UTC)
Goto Top
Ah.. vielleicht doch noch eine Frage.

Ist es irgendwie möglich angemeldet auf einem Server die Gruppenmitglieder eines von mir vorgegebenen Verzeichnisses genauso auszugeben?
Das wäre für mich sehr hilfreich
Member: colinardo
colinardo Sep 29, 2016 updated at 06:25:05 (UTC)
Goto Top
Zitat von @Estefania:
Ist es irgendwie möglich angemeldet auf einem Server die Gruppenmitglieder eines von mir vorgegebenen Verzeichnisses genauso auszugeben?
Du meinst mit "Verzeichnis" eine OU ? D.h. du willst alle Mitglieder von allen Gruppen einer bestimmten OU?

Wenn ja dann hol dir die Gruppen der OU mit Get-AdGroup und dem Parameter -SearchBase, bei dem du die den DN der OU angibst, das ganze pipest du dann an Get-ADGroupMember und der Rest der Pipe bleibt dann wie oben. Fertig.

Bitte präzisiere deine Frage. Merci.
Member: Estefania
Estefania Sep 29, 2016 at 06:30:21 (UTC)
Goto Top
Nein das meinte ich nicht.
Ich möchte z.B. die Mitglieder eines Verzeichnisses ausgegeben haben
z.B. ich gebe das Verzeichnis D:\DATEN\POST an und bei der Ausgabe sollen dann alle User, Gruppen ausgegeben werden, die auf dieses Verzeichnis zugreifen. Ist sowas möglich?
Member: colinardo
colinardo Sep 29, 2016 updated at 06:34:59 (UTC)
Goto Top
Ach so, na das ist ja was ganz anderes als im obigen Thread, das sind keine Mitglieder eines Verz. sondern die NTFS ACLs des Verzeichnisses.

Die bekommst du ganz einfach mit Get-ACL
Member: Estefania
Estefania Sep 29, 2016 at 06:39:58 (UTC)
Goto Top
Leider kenn ich mich mit diesen Scripten nicht so aus. Wie müsste ich es denn genau aufschreiben und als PS1 Datei abspeichern, damit es nutzbar ist?
Member: colinardo
colinardo Sep 29, 2016 updated at 07:01:58 (UTC)
Goto Top
Och mönsch, benutz doch bitte mal die Suche dazu habe ich hier x Scripte bereits gepostet:
Z.B. hier
Vergebene Rechte dokumentieren - Gibt es hierfür ein anwenderfreundliches Tool?
AD User auslesen und in Datei mit Logo abspeichern

Wenn du dir die Eigenschaften der Ausgabe von Get-ACL mal angesehen hättest dann wäre schon alles klar gewesen welche Eigenschaft du brauchst ... face-confused

Get-ACL 'C:\Ordner' | gm *

Get-ACL 'C:\ordner' | select -Expand Access